{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1f3abf7d",
   "metadata": {},
   "source": [
    "# 1. 语言处理与Python\n",
    "\n",
    "上百万字的文本，是容易拿到手的。假设我们会写一些简单的程序，那我们可以用它来做些什么？在本章中，我们将解决以下几个问题：\n",
    "\n",
    "1. 将简单的程序与大量的文本结合起来，我们能实现什么？\n",
    "\n",
    "2. 我们如何能自动提取概括文本风格和内容的关键词和短语？\n",
    "\n",
    "3. Python 编程语言为上述工作提供了哪些工具和技术？\n",
    "\n",
    "4. 自然语言处理中有哪些有趣的挑战？\n",
    "\n",
    "本章分为完全不同风格的两部分。在“语言计算”部分，我们将选取一些语言相关的编程任务而不去解释它们是如何实现的。在“近观Python”部分，我们将系统地回顾关键的编程概念。两种风格将按章节标题区分，而后面几章将混合两种风格而不作明显的区分。我们希望这种风格的介绍能使你对接下来将要碰到的内容有一个真实的体味，与此同时，涵盖语言学与计算机科学的基本概念。如果你对这两个方面已经有了基本的了解，可以跳到第5 节 ; 我们将在后续的章节中重复所有要点，如果错过了什么，你可以很容易地在 `http://nltk.org/` 上查询在线参考材料。如果这些材料对你而言是全新的，那么本章将引发比解答本身更多的问题，这些问题将在本书的其余部分讨论。\n",
    "\n",
    "## 1 语言计算：文本和单词\n",
    "\n",
    "我们都对文本非常熟悉，因为我们每天都读到和写到。在这里，把文本视为我们写的程序的原始数据，这些程序以很多有趣的方式处理和分析文本。但在我们能写这些程序之前，我们必须得从Python 解释器开始。\n",
    "\n",
    "### 1.1 Python 入门\n",
    "\n",
    "Python 对用户友好的一个方式是你可以交互式地直接打字给解释器——将要运行你的Python 代码的程序。你可以通过一个简单的叫做交互式开发环境（Interactive DeveLopment Environment，简称IDLE）的图形接口来访问Python 解释器。在Mac 上，你可以在应用程序→MacPython中找到；在Windows 中，你可以在程序→Python中找到。在Unix 下，你可以在shell 输入idle来运行Python（如果没有安装，尝试输入python）。解释器将会输出关于你的Python 的版本简介，请检查你运行的是否是Python 3.8 更高的版本（这里是3.8.16）：\n",
    "\n",
    "```\n",
    "Python 3.8.16 | packaged by conda-forge | (default, Feb  1 2023, 15:53:35) [MSC v.1929 64 bit (AMD64)] on win32\n",
    "Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n",
    ">>>\n",
    "```\n",
    "注\n",
    "\n",
    "如果你无法运行Python 解释器可能是因为没有正确安装Python。请访问 `http://python.org/` 查阅详细操作说明。NLTK 3.0 在Python 2.6 和2.7 上同样可以工作。如果你使用的是这些较旧的版本，注意/ 运算符会向下舍入小数（所以1/3 会得到0）。为了得到预期的除法行为，你需要输入︰`from __future__ import division`\n",
    "\n",
    "\\>>> 提示符表示Python 解释器正在等待输入。复制这本书的例子时，自己不要键入\">>>\"。现在，让我们开始把Python 当作计算器使用："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "6fb586a5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 一个基本的交互运算\n",
    "1 + 5 * 2 - 3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3bcfee8f",
   "metadata": {},
   "source": [
    "一旦解释器计算并显示出答案，提示符就会出现。这表示Python 解释器在等待另一个指令。\n",
    "\n",
    "注意\n",
    "\n",
    "**轮到你来：** 输入一些你自己的表达式。你可以使用星号（\\*）表示乘法，左斜线（/）表示除法，你可以用括号括起表达式。\n",
    "\n",
    "前面的例子演示了如何交互式的使用Python 解释器，试验Python 语言中各种表达式，看看它们做些什么。现在让我们尝试一个无意义的表达式，看看解释器如何处理："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b595e6b6",
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (1278102326.py, line 1)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  Cell \u001b[1;32mIn[117], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m    1 +\u001b[0m\n\u001b[1;37m       ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "1 +"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "82b8323c",
   "metadata": {},
   "source": [
    "\n",
    "产生了一个语法错误。在Python 中，指令以加号结尾是没有意义的。Python 解释器会指出发生错误的行（“标准输入”<stdin>的第1 行）。\n",
    "\n",
    "现在我们学会使用Python 解释器了，已经准备好可以开始处理语言数据了。\n",
    "    \n",
    "### 1.2 NLTK 入门\n",
    "    \n",
    "在进一步深入之前，应先安装 NLTK 3.0，可以从 `http://nltk.org/` 免费下载。按照说明下载适合你的操作系统的版本。\n",
    "\n",
    "安装完NLTK 之后，像前面那样启动Python 解释器，在Python 提示符后面输入下面两个命令来安装本书所需的数据，然后选择book集合，如1.1所示。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3e7d71fb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import nltk # 导入 nltk 库\n",
    "nltk.download() # 浏览可下载的数据包"
   ]
  },
  {
   "attachments": {
    "1.1.webp": {
     "image/webp": "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"
    }
   },
   "cell_type": "markdown",
   "id": "9c02b242",
   "metadata": {},
   "source": [
    "![1.1.webp](attachment:1.1.webp)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc19fb1d",
   "metadata": {},
   "source": [
    "图 1.1：下载NLTK Book 集：使用`nltk.download()` 浏览可用的软件包.下载器上**Collections** 选项卡显示软件包如何被打包分组，选择**book** 标记所在行，可以获取本书的例子和练习所需的全部数据。这些数据包括约30 个压缩文件，需要350MB 硬盘空间。完整的数据集（即下载器中的**all**）在本书写作期间大约是这个大小的10 倍，还在不断扩充。\n",
    "\n",
    "一旦数据被下载到你的机器，你就可以使用Python 解释器加载其中一些。第一步是在Python 提示符后输入一个特殊的命令，告诉解释器去加载一些我们要用的文本：`from nltk.book import *` 。这条语句是说“从NLTK 的`book` 模块加载所有的东西”。这个`book` 模块包含你阅读本章所需的所有数据。。在输出欢迎信息之后，将会加载几本书的文本（这将需要几秒钟）。下面连同你将看到的输出一起再次列出这条命令。注意拼写和标点符号的正确性，记住不要输入`>>>`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4900ff24",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "*** Introductory Examples for the NLTK Book ***\n",
      "Loading text1, ..., text9 and sent1, ..., sent9\n",
      "Type the name of the text or sentence to view it.\n",
      "Type: 'texts()' or 'sents()' to list the materials.\n",
      "text1: Moby Dick by Herman Melville 1851\n",
      "text2: Sense and Sensibility by Jane Austen 1811\n",
      "text3: The Book of Genesis\n",
      "text4: Inaugural Address Corpus\n",
      "text5: Chat Corpus\n",
      "text6: Monty Python and the Holy Grail\n",
      "text7: Wall Street Journal\n",
      "text8: Personals Corpus\n",
      "text9: The Man Who Was Thursday by G . K . Chesterton 1908\n"
     ]
    }
   ],
   "source": [
    "from nltk.book import * # 加载文本数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9c4bc27",
   "metadata": {},
   "source": [
    "任何时候我们想要找到这些文本，只需要在Python 提示符后输入它们的名字："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0fa1c80e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Text: Moby Dick by Herman Melville 1851>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text1 # 查看文本标题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a7d91db4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Text: Sense and Sensibility by Jane Austen 1811>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c33e52ee",
   "metadata": {},
   "source": [
    "现在我们可以和这些数据一起来使用Python 解释器，我们已经准备好上手了。\n",
    "\n",
    "## 1.3 搜索文本\n",
    "\n",
    "除了阅读文本之外，还有很多方法可以用来研究文本内容。词语索引视角显示一个指定单词的每一次出现，连同一些上下文一起显示。下面我们输入`text1` 后面跟一个点，再输入函数名`concordance`，然后将`\"monstrous\"` 放在括号里，来查一下*Moby Dick* 《白鲸记》中的词monstrous："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "7e030111",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Displaying 11 of 11 matches:\n",
      "ong the former , one was of a most monstrous size . ... This came towards us , \n",
      "ON OF THE PSALMS . \" Touching that monstrous bulk of the whale or ork we have r\n",
      "ll over with a heathenish array of monstrous clubs and spears . Some were thick\n",
      "d as you gazed , and wondered what monstrous cannibal and savage could ever hav\n",
      "that has survived the flood ; most monstrous and most mountainous ! That Himmal\n",
      "they might scout at Moby Dick as a monstrous fable , or still worse and more de\n",
      "th of Radney .'\" CHAPTER 55 Of the Monstrous Pictures of Whales . I shall ere l\n",
      "ing Scenes . In connexion with the monstrous pictures of whales , I am strongly\n",
      "ere to enter upon those still more monstrous stories of them which are to be fo\n",
      "ght have been rummaged out of this monstrous cabinet there is no telling . But \n",
      "of Whale - Bones ; for Whales of a monstrous size are oftentimes cast up dead u\n"
     ]
    }
   ],
   "source": [
    "text1.concordance(\"monstrous\") # 索引指定词的上下文"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4357f4bb",
   "metadata": {},
   "source": [
    "在一段特定的文本上第一次使用concordance 会花费一点时间来构建索引，因此接下来的搜索会很快。\n",
    "\n",
    "注意\n",
    "\n",
    "**轮到你来：** 尝试搜索其他词；为了方便重复输入，你也许会用到上箭头，Ctrl-上箭头或者Alt-p 获取之前输入的命令，然后修改要搜索的词。你也可以在我们包含的其他文本上搜索。例如， 使用`text2.concordance(\"affection\")`，搜索*Sense and Sensibility*《理智与情感》中的affection。使用`text3.concordance(\"lived\")` 搜索Genesis《创世纪》找出某人活了多久。你也可以看看`text4`，*Inaugural Address Corpus*《就职演说语料》，回到1789 年看看那时英语的例子，搜索如nation, terror，god 这样的词，看看随着时间推移这些词的使用如何不同。我们也包括了`text5`，*NPS Chat Corpus*《NPS 聊天语料库》：你可以在里面搜索一些网络词，如im ur，lol。（注意这个语料库未经审查！）\n",
    "\n",
    "在你花了一小会儿研究这些文本之后，我们希望你对语言的丰富性和多样性有一个新的认识。在下一章中，你将学习获取更广泛的文本，包括英语以外其他语言的文本。\n",
    "\n",
    "词语索引使我们看到词的上下文。例如，我们看到monstrous 出现的上下文， the ___ pictures 和a ___ size。还有哪些词出现在相似的上下文中？我们可以通过在被查询的文本名后添加函数名`similar`，然后在括号中插入相关的词来查找到："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "89246528",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "true contemptible christian abundant few part mean careful puzzled\n",
      "mystifying passing curious loving wise doleful gamesome singular\n",
      "delightfully perilous fearless\n"
     ]
    }
   ],
   "source": [
    "text1.similar(\"monstrous\") # 索引和指定词上下文类似的词"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a857468a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "very so exceedingly heartily a as good great extremely remarkably\n",
      "sweet vast amazingly\n"
     ]
    }
   ],
   "source": [
    "text2.similar(\"monstrous\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f88998f3",
   "metadata": {},
   "source": [
    "观察我们从不同的文本中得到的不同结果。Austen 使用这些词与Melville 完全不同；在她那里，monstrous是正面的意思，有时它的功能像词very一样作强调成分。\n",
    "\n",
    "函数`common_contexts`允许我们研究两个或两个以上的词共同的上下文，如monstrous和very。我们必须用方括号和圆括号把这些词括起来，中间用逗号分割："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c9f98ced",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "am_glad a_pretty a_lucky is_pretty be_glad\n"
     ]
    }
   ],
   "source": [
    "text2.common_contexts([\"monstrous\", \"very\"]) # 研究两个或两个以上的词共同的上下文"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0f1fa49",
   "metadata": {},
   "source": [
    "注意\n",
    "\n",
    "**轮到你来：** 挑选另一对词，使用`similar()` 和`common_contexts()` 函数比较它们在两个不同文本中的用法。\n",
    "\n",
    "自动检测出现在文本中的特定的词，并显示同样上下文中出现的一些词，这只是一个方面。我们也可以判断词在文本中的*位置*：从文本开头算起在它前面有多少词。这个位置信息可以用离散图表示。每一个竖线代表一个单词，每一行代表整个文本。在[1.2](http://www.nltk.org/book/ch01.html#fig-inaugural) 中，我们看到在过去220年中的一些显著的词语用法模式（在一个由就职演说语料首尾相连的人为组合的文本中）。可以用下面的方法画出这幅图。你也许会想尝试更多的词（如，liberty，constitution）和不同的文本。你能在看到这幅图之前预测一个词的分布吗？跟以前一样，请保证引号、逗号、中括号及小括号的使用完全正确。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f5f0e953",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gUAPR7Mfbxf7P7blpMID/fzw0UPReGN8OL49kHM9yiQiIiJqFVmeoXNU2WBiPz8s/O00XB2U8HBS4Z+bzsBK8UebQd088N/4LET7u8IgBN7dcBq21n80cHdUws7WCr+n6OClsYPK1grOdua3K3G6cvXsW78kwyCA/oGuKKmsxZHsQjgobXB/X198uPkMIn00CPVUo7rOgO2ndOimvb4f/VLbaNUqPD8iBFr1jT0T2nA717pNY3+hnk43ZfxEzQn1dEK0n4t0H7qbtT+29P41rrezVeBgRr50H7pQTyc8MSRIug/d0BB3qYawrmqpvyeGBEn9GOuMCXJDqOf1P27frGNRS4w1Rvu7NKofAKL9XeDlrMKgbu7SPBrvQ2d8bOynqWNUc8fBtsxBU22be75WrcKYCE/pPnRatQpWCki1Pj8iBNH+Ljfs9e1oFELI8za6ZVW1eO3HJGxMqr9tyZNDg7D9tA7h3s6YNz4CefpKvPT9MRzOKoSnsx3eGB+OGd8mSrctAYDvDmTj422puKivRP9Ay7ctWb4vE1/vz0JOQTmc7WwR4aPBs8O7ISbYHYu3peKnY7k4V1gOO1tr9A90wxt3hrd4cYSRXq+HRqNBcXExnJ1bd4UuERERta+O9vdbtoGus+hoOwQRERG1rKP9/Zbld+iIiIiI6A8MdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQyx0BHREREJHMMdEREREQy126BTgiBOWuPo/f8zQic/StO5hbftG3Hn81H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/eHqaH4FbKSPBumXShHo4djox8pKYaHHxtydVHignx8+eigab4wPx7dXrhoiIiIiuhk62Bk6azwT2w0LN5yGrbUV+gW6Ir+sGql5Jbi1m/nHsD4uDlAogG2ndYjr0QV2ttZwbHDvuT2pl7Fww2n84+4IuDraQldSKW3H2c4WM0aE4K/LD6Krxh7jorrCSgGculCCMxdL8NLoHq0a84ebzyDSR4NQTzWq6wzYfkqHblqn6zMh11mopxOi/VwQ1lUNrbr+LOHzI0IQ7e+CmCA3hHp2nHFr1So8PyLEbJzG32/2tslcR5+fjj6+GyEm2A0/HT2PmGDLX/doSainE2KC3DC4uzuOnyvC0BB3pF8qle5DF+rphHv7eDe6D53xuGE8hng4NT3/oZ5OiPR2ln5vatsxwW5I1dVvszWvoaXXOtTTCT08naT70EX7u7RqDprqr6lx18+JXaN+G7b1cFLhiSFBZvehM/ZtPB6b3oducHd3xJ+9bHYfulBPJ7MxPTEkSBorADw8wE+6D13D43q0n0uj+9BF+7tIfYR6OuHhAX7SfeiSzxe3eB+6mGA3HM0puq73oTPW2F3riB1ndGb7XmvuQxft69zoPnShnk4YE+Ep3YfuWt4bctHhbixsMAh8ujMN3x7Iga6kElq1HR6O8cddvb2l25ZEXLl/0cfbUvH1/ixcLq3ChOjGty3595YULNqW2mgbprct+T3lEj7eloqTucWwtbJCsNYJD/X3w6QrF2IEzv4VS6b0xWiTj2V7vbkJb9wZjgf6+WHxtlT8dCwX5wrLYWdrjf6BbnjjznD4uTm0qt6OdmNCIiIiallH+/vd4QLdn01H2yGIiIioZR3t73eH+g4dEREREbUdAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzDHQEREREckcAx0RERGRzNm09wD+7IQQAAC9Xt/OIyEiIqLWMv7dNv4db28MdO2spKQEAODn59fOIyEiIqK2KikpgUajae9hQCE6SrT8kzIYDMjNzYVarYZCobhu/er1evj5+SEnJwfOzs7Xrd+OiLV2Tqy1c2KtndOfsdbs7GwoFAp4e3vDyqr9v8HGM3TtzMrKCr6+vjesf2dn507/5jJirZ0Ta+2cWGvn9GeqVaPRdKha2z9SEhEREdE1YaAjIiIikjkGuk5KpVJh3rx5UKlU7T2UG461dk6stXNirZ0Ta21/vCiCiIiISOZ4ho6IiIhI5hjoiIiIiGSOgY6IiIhI5hjoiIiIiGSOga4T+vTTTxEUFAQ7Ozv07dsXu3fvbu8hmVm4cCH69+8PtVoNrVaLe+65B2fOnDFrI4TAm2++CW9vb9jb22P48OE4efKkWZuqqio899xz8PDwgKOjI+666y6cO3fOrE1hYSGmTJkCjUYDjUaDKVOmoKioyKxNdnY2xo8fD0dHR3h4eGDGjBmorq6+YbUrFArMnDmzU9Z6/vx5PPLII3B3d4eDgwP69OmDw4cPd7paa2tr8dprryEoKAj29vYIDg7GP/7xDxgMBtnXumvXLowfPx7e3t5QKBT48ccfzdZ3tLpOnDiB2NhY2Nvbw8fHB//4xz9a/f/WbK7WmpoavPrqq+jVqxccHR3h7e2NRx99FLm5uZ2u1oaefvppKBQKfPTRR5221lOnTuGuu+6CRqOBWq3GwIEDkZ2dLbtazQjqVL777jtha2srvvjiC5GcnCyef/554ejoKLKystp7aJLRo0eLZcuWiaSkJHH06FExbtw44e/vL0pLS6U27777rlCr1WLNmjXixIkT4sEHHxRdu3YVer1eavPMM88IHx8fsWXLFnHkyBERFxcnevfuLWpra6U2d9xxh4iMjBT79u0T+/btE5GRkeLOO++U1tfW1orIyEgRFxcnjhw5IrZs2SK8vb3F9OnTr3vdBw4cEIGBgSIq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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "text4.dispersion_plot([\"citizens\", \"democracy\", \"freedom\", \"duties\", \"America\"]) # 需要安装 matplotlib 包"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25c74d8f",
   "metadata": {},
   "source": [
    "图 1.2：美国总统就职演说词汇分布图：可以用来研究随时间推移语言使用上的变化。\n",
    "\n",
    "注意\n",
    "\n",
    "**重要事项：** 为了画出这本书中用到的图形，你需要安装Python 的NumPy 和Matplotlib 包。请参阅`http://nltk.org/` 上的安装说明。\n",
    "\n",
    "注意\n",
    "\n",
    "你还可以使用`https://books.google.com/ngrams` 画出词汇随着时间的使用频率。\n",
    "\n",
    "现在轻松一下，让我们尝试产生一些刚才看到的不同风格的随机文本。要做到这一点，我们需要输入文本的名字后面跟函数名`generate`。(需要带括号，但括号里没有也什么。）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "44eb0e41",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Building ngram index...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "laid by her , and said unto Cain , Where art thou , and said , Go to ,\n",
      "I will not do it for ten ' s sons ; we dreamed each man according to\n",
      "their generatio the firstborn said unto Laban , Because I said , Nay ,\n",
      "but Sarah shall her name be . , duke Elah , duke Shobal , and Akan .\n",
      "and looked upon my affliction . Bashemath Ishmael ' s blood , but Isra\n",
      "for as a prince hast thou found of all the cattle in the valley , and\n",
      "the wo The\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "\"laid by her , and said unto Cain , Where art thou , and said , Go to ,\\nI will not do it for ten ' s sons ; we dreamed each man according to\\ntheir generatio the firstborn said unto Laban , Because I said , Nay ,\\nbut Sarah shall her name be . , duke Elah , duke Shobal , and Akan .\\nand looked upon my affliction . Bashemath Ishmael ' s blood , but Isra\\nfor as a prince hast thou found of all the cattle in the valley , and\\nthe wo The\""
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text3.generate() # 生成与 text3 文本风格类似的随机文本"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de96d9b7",
   "metadata": {},
   "source": [
    "Note\n",
    "\n",
    "`generate()` 方法在 NLTK 3.0 中不可用，但会在后续版本中恢复。\n",
    "\n",
    "## 1.4 词汇计数\n",
    "\n",
    "关于前面例子中出现的文本，最明显的事实是它们所使用的词汇不同。在本节中，我们将看到如何使用计算机以各种有用的方式计数词汇。像以前一样，你将会马上开始用Python 解释器进行试验，即使你可能还没有系统的研究过Python。通过修改这些例子测试一下你是否理解它们，尝试一下本章结尾处的练习。\n",
    "\n",
    "首先，让我们算出文本从头到尾的长度，包括文本中出现的词和标点符号。我们使用函数`len`获取长度，请看在《创世纪》中使用的例子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2ccd473b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "44764"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(text3) # 文本长度（词和标点符号）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0339372",
   "metadata": {},
   "source": [
    "《创世纪》有44764 个词和标点符号或者叫“词符”。词符 表示一个我们想要整体对待的字符序列 —— 例如`hairy`，`his` 或 `:)`。当我们计数文本如to be or not to be 这个短语中词符的个数时，我们计数这些序列出现的次数。因此，我们的例句中出现了to 和be 各两次，or 和not 各一次。然而在例句中只有4 个不同的词。《创世纪》中有多少不同的词？要用Python 来回答这个问题，我们处理问题的方法将稍有改变。一个文本词汇表只是它用到的词符的*集合*，因为在集合中所有重复的元素都只算一个。Python 中我们可以使用命令：`set(text3)` 获得`text3` 的词汇表。当你这样做时，屏幕上的很多词会掠过。现在尝试以下操作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3c9f0437",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['!',\n",
       " \"'\",\n",
       " '(',\n",
       " ')',\n",
       " ',',\n",
       " ',)',\n",
       " '.',\n",
       " '.)',\n",
       " ':',\n",
       " ';',\n",
       " ';)',\n",
       " '?',\n",
       " '?)',\n",
       " 'A',\n",
       " 'Abel',\n",
       " 'Abelmizraim',\n",
       " 'Abidah',\n",
       " 'Abide',\n",
       " 'Abimael',\n",
       " 'Abimelech',\n",
       " 'Abr',\n",
       " 'Abrah',\n",
       " 'Abraham',\n",
       " 'Abram',\n",
       " 'Accad',\n",
       " 'Achbor',\n",
       " 'Adah',\n",
       " 'Adam',\n",
       " 'Adbeel',\n",
       " 'Admah',\n",
       " 'Adullamite',\n",
       " 'After',\n",
       " 'Aholibamah',\n",
       " 'Ahuzzath',\n",
       " 'Ajah',\n",
       " 'Akan',\n",
       " 'All',\n",
       " 'Allonbachuth',\n",
       " 'Almighty',\n",
       " 'Almodad',\n",
       " 'Also',\n",
       " 'Alvah',\n",
       " 'Alvan',\n",
       " 'Am',\n",
       " 'Amal',\n",
       " 'Amalek',\n",
       " 'Amalekites',\n",
       " 'Ammon',\n",
       " 'Amorite',\n",
       " 'Amorites',\n",
       " 'Amraphel',\n",
       " 'An',\n",
       " 'Anah',\n",
       " 'Anamim',\n",
       " 'And',\n",
       " 'Aner',\n",
       " 'Angel',\n",
       " 'Appoint',\n",
       " 'Aram',\n",
       " 'Aran',\n",
       " 'Ararat',\n",
       " 'Arbah',\n",
       " 'Ard',\n",
       " 'Are',\n",
       " 'Areli',\n",
       " 'Arioch',\n",
       " 'Arise',\n",
       " 'Arkite',\n",
       " 'Arodi',\n",
       " 'Arphaxad',\n",
       " 'Art',\n",
       " 'Arvadite',\n",
       " 'As',\n",
       " 'Asenath',\n",
       " 'Ashbel',\n",
       " 'Asher',\n",
       " 'Ashkenaz',\n",
       " 'Ashteroth',\n",
       " 'Ask',\n",
       " 'Asshur',\n",
       " 'Asshurim',\n",
       " 'Assyr',\n",
       " 'Assyria',\n",
       " 'At',\n",
       " 'Atad',\n",
       " 'Avith',\n",
       " 'Baalhanan',\n",
       " 'Babel',\n",
       " 'Bashemath',\n",
       " 'Be',\n",
       " 'Because',\n",
       " 'Becher',\n",
       " 'Bedad',\n",
       " 'Beeri',\n",
       " 'Beerlahairoi',\n",
       " 'Beersheba',\n",
       " 'Behold',\n",
       " 'Bela',\n",
       " 'Belah',\n",
       " 'Benam',\n",
       " 'Benjamin',\n",
       " 'Beno',\n",
       " 'Beor',\n",
       " 'Bera',\n",
       " 'Bered',\n",
       " 'Beriah',\n",
       " 'Bethel',\n",
       " 'Bethlehem',\n",
       " 'Bethuel',\n",
       " 'Beware',\n",
       " 'Bilhah',\n",
       " 'Bilhan',\n",
       " 'Binding',\n",
       " 'Birsha',\n",
       " 'Bless',\n",
       " 'Blessed',\n",
       " 'Both',\n",
       " 'Bow',\n",
       " 'Bozrah',\n",
       " 'Bring',\n",
       " 'But',\n",
       " 'Buz',\n",
       " 'By',\n",
       " 'Cain',\n",
       " 'Cainan',\n",
       " 'Calah',\n",
       " 'Calneh',\n",
       " 'Can',\n",
       " 'Cana',\n",
       " 'Canaan',\n",
       " 'Canaanite',\n",
       " 'Canaanites',\n",
       " 'Canaanitish',\n",
       " 'Caphtorim',\n",
       " 'Carmi',\n",
       " 'Casluhim',\n",
       " 'Cast',\n",
       " 'Cause',\n",
       " 'Chaldees',\n",
       " 'Chedorlaomer',\n",
       " 'Cheran',\n",
       " 'Cherubims',\n",
       " 'Chesed',\n",
       " 'Chezib',\n",
       " 'Come',\n",
       " 'Cursed',\n",
       " 'Cush',\n",
       " 'Damascus',\n",
       " 'Dan',\n",
       " 'Day',\n",
       " 'Deborah',\n",
       " 'Dedan',\n",
       " 'Deliver',\n",
       " 'Diklah',\n",
       " 'Din',\n",
       " 'Dinah',\n",
       " 'Dinhabah',\n",
       " 'Discern',\n",
       " 'Dishan',\n",
       " 'Dishon',\n",
       " 'Do',\n",
       " 'Dodanim',\n",
       " 'Dothan',\n",
       " 'Drink',\n",
       " 'Duke',\n",
       " 'Dumah',\n",
       " 'Earth',\n",
       " 'Ebal',\n",
       " 'Eber',\n",
       " 'Edar',\n",
       " 'Eden',\n",
       " 'Edom',\n",
       " 'Edomites',\n",
       " 'Egy',\n",
       " 'Egypt',\n",
       " 'Egyptia',\n",
       " 'Egyptian',\n",
       " 'Egyptians',\n",
       " 'Ehi',\n",
       " 'Elah',\n",
       " 'Elam',\n",
       " 'Elbethel',\n",
       " 'Eldaah',\n",
       " 'EleloheIsrael',\n",
       " 'Eliezer',\n",
       " 'Eliphaz',\n",
       " 'Elishah',\n",
       " 'Ellasar',\n",
       " 'Elon',\n",
       " 'Elparan',\n",
       " 'Emins',\n",
       " 'En',\n",
       " 'Enmishpat',\n",
       " 'Eno',\n",
       " 'Enoch',\n",
       " 'Enos',\n",
       " 'Ephah',\n",
       " 'Epher',\n",
       " 'Ephra',\n",
       " 'Ephraim',\n",
       " 'Ephrath',\n",
       " 'Ephron',\n",
       " 'Er',\n",
       " 'Erech',\n",
       " 'Eri',\n",
       " 'Es',\n",
       " 'Esau',\n",
       " 'Escape',\n",
       " 'Esek',\n",
       " 'Eshban',\n",
       " 'Eshcol',\n",
       " 'Ethiopia',\n",
       " 'Euphrat',\n",
       " 'Euphrates',\n",
       " 'Eve',\n",
       " 'Even',\n",
       " 'Every',\n",
       " 'Except',\n",
       " 'Ezbon',\n",
       " 'Ezer',\n",
       " 'Fear',\n",
       " 'Feed',\n",
       " 'Fifteen',\n",
       " 'Fill',\n",
       " 'For',\n",
       " 'Forasmuch',\n",
       " 'Forgive',\n",
       " 'From',\n",
       " 'Fulfil',\n",
       " 'G',\n",
       " 'Gad',\n",
       " 'Gaham',\n",
       " 'Galeed',\n",
       " 'Gatam',\n",
       " 'Gather',\n",
       " 'Gaza',\n",
       " 'Gentiles',\n",
       " 'Gera',\n",
       " 'Gerar',\n",
       " 'Gershon',\n",
       " 'Get',\n",
       " 'Gether',\n",
       " 'Gihon',\n",
       " 'Gilead',\n",
       " 'Girgashites',\n",
       " 'Girgasite',\n",
       " 'Give',\n",
       " 'Go',\n",
       " 'God',\n",
       " 'Gomer',\n",
       " 'Gomorrah',\n",
       " 'Goshen',\n",
       " 'Guni',\n",
       " 'Hadad',\n",
       " 'Hadar',\n",
       " 'Hadoram',\n",
       " 'Hagar',\n",
       " 'Haggi',\n",
       " 'Hai',\n",
       " 'Ham',\n",
       " 'Hamathite',\n",
       " 'Hamor',\n",
       " 'Hamul',\n",
       " 'Hanoch',\n",
       " 'Happy',\n",
       " 'Haran',\n",
       " 'Hast',\n",
       " 'Haste',\n",
       " 'Have',\n",
       " 'Havilah',\n",
       " 'Hazarmaveth',\n",
       " 'Hazezontamar',\n",
       " 'Hazo',\n",
       " 'He',\n",
       " 'Hear',\n",
       " 'Heaven',\n",
       " 'Heber',\n",
       " 'Hebrew',\n",
       " 'Hebrews',\n",
       " 'Hebron',\n",
       " 'Hemam',\n",
       " 'Hemdan',\n",
       " 'Here',\n",
       " 'Hereby',\n",
       " 'Heth',\n",
       " 'Hezron',\n",
       " 'Hiddekel',\n",
       " 'Hinder',\n",
       " 'Hirah',\n",
       " 'His',\n",
       " 'Hitti',\n",
       " 'Hittite',\n",
       " 'Hittites',\n",
       " 'Hivite',\n",
       " 'Hobah',\n",
       " 'Hori',\n",
       " 'Horite',\n",
       " 'Horites',\n",
       " 'How',\n",
       " 'Hul',\n",
       " 'Huppim',\n",
       " 'Husham',\n",
       " 'Hushim',\n",
       " 'Huz',\n",
       " 'I',\n",
       " 'If',\n",
       " 'In',\n",
       " 'Irad',\n",
       " 'Iram',\n",
       " 'Is',\n",
       " 'Isa',\n",
       " 'Isaac',\n",
       " 'Iscah',\n",
       " 'Ishbak',\n",
       " 'Ishmael',\n",
       " 'Ishmeelites',\n",
       " 'Ishuah',\n",
       " 'Isra',\n",
       " 'Israel',\n",
       " 'Issachar',\n",
       " 'Isui',\n",
       " 'It',\n",
       " 'Ithran',\n",
       " 'Jaalam',\n",
       " 'Jabal',\n",
       " 'Jabbok',\n",
       " 'Jac',\n",
       " 'Jachin',\n",
       " 'Jacob',\n",
       " 'Jahleel',\n",
       " 'Jahzeel',\n",
       " 'Jamin',\n",
       " 'Japhe',\n",
       " 'Japheth',\n",
       " 'Jared',\n",
       " 'Javan',\n",
       " 'Jebusite',\n",
       " 'Jebusites',\n",
       " 'Jegarsahadutha',\n",
       " 'Jehovahjireh',\n",
       " 'Jemuel',\n",
       " 'Jerah',\n",
       " 'Jetheth',\n",
       " 'Jetur',\n",
       " 'Jeush',\n",
       " 'Jezer',\n",
       " 'Jidlaph',\n",
       " 'Jimnah',\n",
       " 'Job',\n",
       " 'Jobab',\n",
       " 'Jokshan',\n",
       " 'Joktan',\n",
       " 'Jordan',\n",
       " 'Joseph',\n",
       " 'Jubal',\n",
       " 'Judah',\n",
       " 'Judge',\n",
       " 'Judith',\n",
       " 'Kadesh',\n",
       " 'Kadmonites',\n",
       " 'Karnaim',\n",
       " 'Kedar',\n",
       " 'Kedemah',\n",
       " 'Kemuel',\n",
       " 'Kenaz',\n",
       " 'Kenites',\n",
       " 'Kenizzites',\n",
       " 'Keturah',\n",
       " 'Kiriathaim',\n",
       " 'Kirjatharba',\n",
       " 'Kittim',\n",
       " 'Know',\n",
       " 'Kohath',\n",
       " 'Kor',\n",
       " 'Korah',\n",
       " 'LO',\n",
       " 'LORD',\n",
       " 'Laban',\n",
       " 'Lahairoi',\n",
       " 'Lamech',\n",
       " 'Lasha',\n",
       " 'Lay',\n",
       " 'Leah',\n",
       " 'Lehabim',\n",
       " 'Lest',\n",
       " 'Let',\n",
       " 'Letushim',\n",
       " 'Leummim',\n",
       " 'Levi',\n",
       " 'Lie',\n",
       " 'Lift',\n",
       " 'Lo',\n",
       " 'Look',\n",
       " 'Lot',\n",
       " 'Lotan',\n",
       " 'Lud',\n",
       " 'Ludim',\n",
       " 'Luz',\n",
       " 'Maachah',\n",
       " 'Machir',\n",
       " 'Machpelah',\n",
       " 'Madai',\n",
       " 'Magdiel',\n",
       " 'Magog',\n",
       " 'Mahalaleel',\n",
       " 'Mahalath',\n",
       " 'Mahanaim',\n",
       " 'Make',\n",
       " 'Malchiel',\n",
       " 'Male',\n",
       " 'Mam',\n",
       " 'Mamre',\n",
       " 'Man',\n",
       " 'Manahath',\n",
       " 'Manass',\n",
       " 'Manasseh',\n",
       " 'Mash',\n",
       " 'Masrekah',\n",
       " 'Massa',\n",
       " 'Matred',\n",
       " 'Me',\n",
       " 'Medan',\n",
       " 'Mehetabel',\n",
       " 'Mehujael',\n",
       " 'Melchizedek',\n",
       " 'Merari',\n",
       " 'Mesha',\n",
       " 'Meshech',\n",
       " 'Mesopotamia',\n",
       " 'Methusa',\n",
       " 'Methusael',\n",
       " 'Methuselah',\n",
       " 'Mezahab',\n",
       " 'Mibsam',\n",
       " 'Mibzar',\n",
       " 'Midian',\n",
       " 'Midianites',\n",
       " 'Milcah',\n",
       " 'Mishma',\n",
       " 'Mizpah',\n",
       " 'Mizraim',\n",
       " 'Mizz',\n",
       " 'Moab',\n",
       " 'Moabites',\n",
       " 'Moreh',\n",
       " 'Moreover',\n",
       " 'Moriah',\n",
       " 'Muppim',\n",
       " 'My',\n",
       " 'Naamah',\n",
       " 'Naaman',\n",
       " 'Nahath',\n",
       " 'Nahor',\n",
       " 'Naphish',\n",
       " 'Naphtali',\n",
       " 'Naphtuhim',\n",
       " 'Nay',\n",
       " 'Nebajoth',\n",
       " 'Neither',\n",
       " 'Night',\n",
       " 'Nimrod',\n",
       " 'Nineveh',\n",
       " 'Noah',\n",
       " 'Nod',\n",
       " 'Not',\n",
       " 'Now',\n",
       " 'O',\n",
       " 'Obal',\n",
       " 'Of',\n",
       " 'Oh',\n",
       " 'Ohad',\n",
       " 'Omar',\n",
       " 'On',\n",
       " 'Onam',\n",
       " 'Onan',\n",
       " 'Only',\n",
       " 'Ophir',\n",
       " 'Our',\n",
       " 'Out',\n",
       " 'Padan',\n",
       " 'Padanaram',\n",
       " 'Paran',\n",
       " 'Pass',\n",
       " 'Pathrusim',\n",
       " 'Pau',\n",
       " 'Peace',\n",
       " 'Peleg',\n",
       " 'Peniel',\n",
       " 'Penuel',\n",
       " 'Peradventure',\n",
       " 'Perizzit',\n",
       " 'Perizzite',\n",
       " 'Perizzites',\n",
       " 'Phallu',\n",
       " 'Phara',\n",
       " 'Pharaoh',\n",
       " 'Pharez',\n",
       " 'Phichol',\n",
       " 'Philistim',\n",
       " 'Philistines',\n",
       " 'Phut',\n",
       " 'Phuvah',\n",
       " 'Pildash',\n",
       " 'Pinon',\n",
       " 'Pison',\n",
       " 'Potiphar',\n",
       " 'Potipherah',\n",
       " 'Put',\n",
       " 'Raamah',\n",
       " 'Rachel',\n",
       " 'Rameses',\n",
       " 'Rebek',\n",
       " 'Rebekah',\n",
       " 'Rehoboth',\n",
       " 'Remain',\n",
       " 'Rephaims',\n",
       " 'Resen',\n",
       " 'Return',\n",
       " 'Reu',\n",
       " 'Reub',\n",
       " 'Reuben',\n",
       " 'Reuel',\n",
       " 'Reumah',\n",
       " 'Riphath',\n",
       " 'Rosh',\n",
       " 'Sabtah',\n",
       " 'Sabtech',\n",
       " 'Said',\n",
       " 'Salah',\n",
       " 'Salem',\n",
       " 'Samlah',\n",
       " 'Sarah',\n",
       " 'Sarai',\n",
       " 'Saul',\n",
       " 'Save',\n",
       " 'Say',\n",
       " 'Se',\n",
       " 'Seba',\n",
       " 'See',\n",
       " 'Seeing',\n",
       " 'Seir',\n",
       " 'Sell',\n",
       " 'Send',\n",
       " 'Sephar',\n",
       " 'Serah',\n",
       " 'Sered',\n",
       " 'Serug',\n",
       " 'Set',\n",
       " 'Seth',\n",
       " 'Shalem',\n",
       " 'Shall',\n",
       " 'Shalt',\n",
       " 'Shammah',\n",
       " 'Shaul',\n",
       " 'Shaveh',\n",
       " 'She',\n",
       " 'Sheba',\n",
       " 'Shebah',\n",
       " 'Shechem',\n",
       " 'Shed',\n",
       " 'Shel',\n",
       " 'Shelah',\n",
       " 'Sheleph',\n",
       " 'Shem',\n",
       " 'Shemeber',\n",
       " 'Shepho',\n",
       " 'Shillem',\n",
       " 'Shiloh',\n",
       " 'Shimron',\n",
       " 'Shinab',\n",
       " 'Shinar',\n",
       " 'Shobal',\n",
       " 'Should',\n",
       " 'Shuah',\n",
       " 'Shuni',\n",
       " 'Shur',\n",
       " 'Sichem',\n",
       " 'Siddim',\n",
       " 'Sidon',\n",
       " 'Simeon',\n",
       " 'Sinite',\n",
       " 'Sitnah',\n",
       " 'Slay',\n",
       " 'So',\n",
       " 'Sod',\n",
       " 'Sodom',\n",
       " 'Sojourn',\n",
       " 'Some',\n",
       " 'Spake',\n",
       " 'Speak',\n",
       " 'Spirit',\n",
       " 'Stand',\n",
       " 'Succoth',\n",
       " 'Surely',\n",
       " 'Swear',\n",
       " 'Syrian',\n",
       " 'Take',\n",
       " 'Tamar',\n",
       " 'Tarshish',\n",
       " 'Tebah',\n",
       " 'Tell',\n",
       " 'Tema',\n",
       " 'Teman',\n",
       " 'Temani',\n",
       " 'Terah',\n",
       " 'Thahash',\n",
       " 'That',\n",
       " 'The',\n",
       " 'Then',\n",
       " 'There',\n",
       " 'Therefore',\n",
       " 'These',\n",
       " 'They',\n",
       " 'Thirty',\n",
       " 'This',\n",
       " 'Thorns',\n",
       " 'Thou',\n",
       " 'Thus',\n",
       " 'Thy',\n",
       " 'Tidal',\n",
       " 'Timna',\n",
       " 'Timnah',\n",
       " 'Timnath',\n",
       " 'Tiras',\n",
       " 'To',\n",
       " 'Togarmah',\n",
       " 'Tola',\n",
       " 'Tubal',\n",
       " 'Tubalcain',\n",
       " 'Twelve',\n",
       " 'Two',\n",
       " 'Unstable',\n",
       " 'Until',\n",
       " 'Unto',\n",
       " 'Up',\n",
       " 'Upon',\n",
       " 'Ur',\n",
       " 'Uz',\n",
       " 'Uzal',\n",
       " 'We',\n",
       " 'What',\n",
       " 'When',\n",
       " 'Whence',\n",
       " 'Where',\n",
       " 'Whereas',\n",
       " 'Wherefore',\n",
       " 'Which',\n",
       " 'While',\n",
       " 'Who',\n",
       " 'Whose',\n",
       " 'Whoso',\n",
       " 'Why',\n",
       " 'Wilt',\n",
       " 'With',\n",
       " 'Woman',\n",
       " 'Ye',\n",
       " 'Yea',\n",
       " 'Yet',\n",
       " 'Zaavan',\n",
       " 'Zaphnathpaaneah',\n",
       " 'Zar',\n",
       " 'Zarah',\n",
       " 'Zeboiim',\n",
       " 'Zeboim',\n",
       " 'Zebul',\n",
       " 'Zebulun',\n",
       " 'Zemarite',\n",
       " 'Zepho',\n",
       " 'Zerah',\n",
       " 'Zibeon',\n",
       " 'Zidon',\n",
       " 'Zillah',\n",
       " 'Zilpah',\n",
       " 'Zimran',\n",
       " 'Ziphion',\n",
       " 'Zo',\n",
       " 'Zoar',\n",
       " 'Zohar',\n",
       " 'Zuzims',\n",
       " 'a',\n",
       " 'abated',\n",
       " 'abide',\n",
       " 'able',\n",
       " 'abode',\n",
       " 'abomination',\n",
       " 'about',\n",
       " 'above',\n",
       " 'abroad',\n",
       " 'absent',\n",
       " 'abundantly',\n",
       " 'accept',\n",
       " 'accepted',\n",
       " 'according',\n",
       " 'acknowledged',\n",
       " 'activity',\n",
       " 'add',\n",
       " 'adder',\n",
       " 'afar',\n",
       " 'afflict',\n",
       " 'affliction',\n",
       " 'afraid',\n",
       " 'after',\n",
       " 'afterward',\n",
       " 'afterwards',\n",
       " 'aga',\n",
       " 'again',\n",
       " 'against',\n",
       " 'age',\n",
       " 'aileth',\n",
       " 'air',\n",
       " 'al',\n",
       " 'alive',\n",
       " 'all',\n",
       " 'almon',\n",
       " 'alo',\n",
       " 'alone',\n",
       " 'aloud',\n",
       " 'also',\n",
       " 'altar',\n",
       " 'altogether',\n",
       " 'always',\n",
       " 'am',\n",
       " 'among',\n",
       " 'amongst',\n",
       " 'an',\n",
       " 'and',\n",
       " 'angel',\n",
       " 'angels',\n",
       " 'anger',\n",
       " 'angry',\n",
       " 'anguish',\n",
       " 'anointedst',\n",
       " 'anoth',\n",
       " 'another',\n",
       " 'answer',\n",
       " 'answered',\n",
       " 'any',\n",
       " 'anything',\n",
       " 'appe',\n",
       " 'appear',\n",
       " 'appeared',\n",
       " 'appease',\n",
       " 'appoint',\n",
       " 'appointed',\n",
       " 'aprons',\n",
       " 'archer',\n",
       " 'archers',\n",
       " 'are',\n",
       " 'arise',\n",
       " 'ark',\n",
       " 'armed',\n",
       " 'arms',\n",
       " 'army',\n",
       " 'arose',\n",
       " 'arrayed',\n",
       " 'art',\n",
       " 'artificer',\n",
       " 'as',\n",
       " 'ascending',\n",
       " 'ash',\n",
       " 'ashamed',\n",
       " 'ask',\n",
       " 'asked',\n",
       " 'asketh',\n",
       " 'ass',\n",
       " 'assembly',\n",
       " 'asses',\n",
       " 'assigned',\n",
       " 'asswaged',\n",
       " 'at',\n",
       " 'attained',\n",
       " 'audience',\n",
       " 'avenged',\n",
       " 'aw',\n",
       " 'awaked',\n",
       " 'away',\n",
       " 'awoke',\n",
       " 'back',\n",
       " 'backward',\n",
       " 'bad',\n",
       " 'bade',\n",
       " 'badest',\n",
       " 'badne',\n",
       " 'bak',\n",
       " 'bake',\n",
       " 'bakemeats',\n",
       " 'baker',\n",
       " 'bakers',\n",
       " 'balm',\n",
       " 'bands',\n",
       " 'bank',\n",
       " 'bare',\n",
       " 'barr',\n",
       " 'barren',\n",
       " 'basket',\n",
       " 'baskets',\n",
       " 'battle',\n",
       " 'bdellium',\n",
       " 'be',\n",
       " 'bear',\n",
       " 'beari',\n",
       " 'bearing',\n",
       " 'beast',\n",
       " 'beasts',\n",
       " 'beautiful',\n",
       " 'became',\n",
       " 'because',\n",
       " 'become',\n",
       " 'bed',\n",
       " 'been',\n",
       " 'befall',\n",
       " 'befell',\n",
       " 'before',\n",
       " 'began',\n",
       " 'begat',\n",
       " 'beget',\n",
       " 'begettest',\n",
       " 'begin',\n",
       " 'beginning',\n",
       " 'begotten',\n",
       " 'beguiled',\n",
       " 'beheld',\n",
       " 'behind',\n",
       " 'behold',\n",
       " 'being',\n",
       " 'believed',\n",
       " 'belly',\n",
       " 'belong',\n",
       " 'beneath',\n",
       " 'bereaved',\n",
       " 'beside',\n",
       " 'besides',\n",
       " 'besought',\n",
       " 'best',\n",
       " 'betimes',\n",
       " 'better',\n",
       " 'between',\n",
       " 'betwixt',\n",
       " 'beyond',\n",
       " 'binding',\n",
       " 'bird',\n",
       " 'birds',\n",
       " 'birthday',\n",
       " 'birthright',\n",
       " 'biteth',\n",
       " 'bitter',\n",
       " 'blame',\n",
       " 'blameless',\n",
       " 'blasted',\n",
       " 'bless',\n",
       " 'blessed',\n",
       " 'blesseth',\n",
       " 'blessi',\n",
       " 'blessing',\n",
       " 'blessings',\n",
       " 'blindness',\n",
       " 'blood',\n",
       " 'blossoms',\n",
       " 'bodies',\n",
       " 'boldly',\n",
       " 'bondman',\n",
       " 'bondmen',\n",
       " 'bondwoman',\n",
       " 'bone',\n",
       " 'bones',\n",
       " 'book',\n",
       " 'booths',\n",
       " 'border',\n",
       " 'borders',\n",
       " 'born',\n",
       " 'bosom',\n",
       " 'both',\n",
       " 'bottle',\n",
       " 'bou',\n",
       " 'boug',\n",
       " 'bough',\n",
       " 'bought',\n",
       " 'bound',\n",
       " 'bow',\n",
       " 'bowed',\n",
       " 'bowels',\n",
       " 'bowing',\n",
       " 'boys',\n",
       " 'bracelets',\n",
       " 'branches',\n",
       " 'brass',\n",
       " 'bre',\n",
       " 'breach',\n",
       " 'bread',\n",
       " 'breadth',\n",
       " 'break',\n",
       " 'breaketh',\n",
       " 'breaking',\n",
       " 'breasts',\n",
       " 'breath',\n",
       " 'breathed',\n",
       " 'breed',\n",
       " 'brethren',\n",
       " 'brick',\n",
       " 'brimstone',\n",
       " 'bring',\n",
       " 'brink',\n",
       " 'broken',\n",
       " 'brook',\n",
       " 'broth',\n",
       " 'brother',\n",
       " 'brought',\n",
       " 'brown',\n",
       " 'bruise',\n",
       " 'budded',\n",
       " 'build',\n",
       " 'builded',\n",
       " 'built',\n",
       " 'bulls',\n",
       " 'bundle',\n",
       " 'bundles',\n",
       " 'burdens',\n",
       " 'buried',\n",
       " 'burn',\n",
       " 'burning',\n",
       " 'burnt',\n",
       " 'bury',\n",
       " 'buryingplace',\n",
       " 'business',\n",
       " 'but',\n",
       " 'butler',\n",
       " 'butlers',\n",
       " 'butlership',\n",
       " 'butter',\n",
       " 'buy',\n",
       " 'by',\n",
       " 'cakes',\n",
       " 'calf',\n",
       " 'call',\n",
       " 'called',\n",
       " 'came',\n",
       " 'camel',\n",
       " 'camels',\n",
       " 'camest',\n",
       " 'can',\n",
       " 'cannot',\n",
       " 'canst',\n",
       " 'captain',\n",
       " 'captive',\n",
       " 'captives',\n",
       " 'carcases',\n",
       " 'carried',\n",
       " 'carry',\n",
       " 'cast',\n",
       " 'castles',\n",
       " 'catt',\n",
       " 'cattle',\n",
       " 'caught',\n",
       " 'cause',\n",
       " 'caused',\n",
       " 'cave',\n",
       " 'cease',\n",
       " 'ceased',\n",
       " 'certain',\n",
       " 'certainly',\n",
       " 'chain',\n",
       " 'chamber',\n",
       " 'change',\n",
       " 'changed',\n",
       " 'changes',\n",
       " 'charge',\n",
       " 'charged',\n",
       " 'chariot',\n",
       " 'chariots',\n",
       " 'chesnut',\n",
       " 'chi',\n",
       " 'chief',\n",
       " 'child',\n",
       " 'childless',\n",
       " 'childr',\n",
       " 'children',\n",
       " 'chode',\n",
       " 'choice',\n",
       " 'chose',\n",
       " 'circumcis',\n",
       " 'circumcise',\n",
       " 'circumcised',\n",
       " 'citi',\n",
       " 'cities',\n",
       " 'city',\n",
       " 'clave',\n",
       " 'clean',\n",
       " 'clear',\n",
       " 'cleave',\n",
       " 'clo',\n",
       " 'closed',\n",
       " 'clothed',\n",
       " 'clothes',\n",
       " 'cloud',\n",
       " 'clusters',\n",
       " 'co',\n",
       " 'coat',\n",
       " 'coats',\n",
       " 'coffin',\n",
       " 'cold',\n",
       " ...]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(set(text3)) # [1]（注释为编号的对应在文字说明部分为代码解释） 获取 text3 文本词汇表并排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "ce8942b4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2789"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(set(text3)) # [2]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d574ace",
   "metadata": {},
   "source": [
    "用`sorted()` 包裹起Python 表达式`set(text3)`  [# 1](http://www.nltk.org/book/ch01.html#sorted-set)，我们得到一个词汇项的排序表，这个表以各种标点符号开始，然后是以A 开头的词汇。大写单词排在小写单词前面。我们通过求集合中元素的个数间接获得词汇表的大小，再次使用`len`来获得这个数值 [# 2](http://www.nltk.org/book/ch01.html#len-set)。尽管小说中有44,764 个词符，但只有2,789 个不同的单词或“词类型”。一个词类型是指一个词在一个文本中独一无二的出现形式或拼写 —— 也就是说，这个词在词汇表中是唯一的。我们计数的2,789 个元素中包括标点符号，所以我们把这些叫做唯一元素类型而不是词类型。\n",
    "\n",
    "现在，让我们对文本词汇丰富度进行测量。下一个例子向我们展示，不同的单词数目只是单词总数的6%，或者每个单词平均被使用了16 次（记住，如果你使用的是Python 2，请在开始输入`from __future__ import division`）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "98239994",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.06230453042623537"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(set(text3)) / len(text3) # 文本词汇丰富度  不重复词汇数量/使用词汇总数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37c46f05",
   "metadata": {},
   "source": [
    "接下来，让我们专注于特定的词。我们可以计数一个词在文本中出现的次数，计算一个特定的词在文本中占据的百分比："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "1baae6c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text3.count(\"smote\") # 统计一个词在文本中出现的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "150711d4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.457806031353621"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "100 * text4.count('a') / len(text4) # 计算一个特定的词在文本中占据的百分比"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "646df66b",
   "metadata": {},
   "source": [
    "注\n",
    "\n",
    "**轮到你来：** `text5` 中lol 出现了多少次？它占文本全部词数的百分比是多少？\n",
    "\n",
    "你也许想要对几个文本重复这些计算，但重新输入公式是乏味的。你可以自己命名一个任务，如“lexical_diversity”或“percentage”，然后用一个代码块关联它。现在，你只需输入一个很短的名字就可以代替一行或多行Python 代码，而且你想用多少次就用多少次。执行一个任务的代码段叫做一个函数，我们使用关键字`def` 给函数定义一个简短的名字。下面的例子演示如何定义两个新的函数，`lexical_diversity()` 和`percentage()`："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "302a630d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def lexical_diversity(text): # 1\n",
    "    return len(set(text)) / len(text) # 2 统计文本不重复词汇数量\n",
    "\n",
    "def percentage(count, total): # 3\n",
    "    return 100 * count / total # 单个词使用次数在全文词数的百分比"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a3151ff",
   "metadata": {},
   "source": [
    "小心！\n",
    "\n",
    "当遇到第一行末尾的冒号后，Python 解释器提示符由`>>>` 变为`...` 。`...`提示符表示Python 期望在后面是一个缩进代码块 。缩进是输入四个空格还是敲击Tab 键，这由你决定。要结束一个缩进代码段，只需输入一个空行。\n",
    "\n",
    "`lexical_diversity()` [# 1](http://www.nltk.org/book/ch01.html#fun-parameter1) 的定义中，我们指定了一个`text` 参数。这个参数是我们想要计算词汇多样性的实际文本的一个“占位符”，并在用到这个函数的时候出现在将要运行的代码块中 [# 2](http://www.nltk.org/book/ch01.html#locvar) 。类似地，`percentage()` 定义了两个参数，`count` 和`total` [# 3](http://www.nltk.org/book/ch01.html#fun-parameter2) 。\n",
    "\n",
    "只要Python 知道了`lexical_diversity()` 和`percentage()` 是指定代码段的名字，我们就可以继续使用这些函数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "861fe319",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.06230453042623537"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lexical_diversity(text3) # text3 文本中不重复词全文占比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "90c9b007",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.13477005109975562"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lexical_diversity(text5) # text5 文本中不重复词全文占比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "50aedf45",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "80.0"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "percentage(4, 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f48d2754",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.457806031353621"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "percentage(text4.count('a'), len(text4))  # text4 文本中单词 a 占全文总词数的比值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9919876a",
   "metadata": {},
   "source": [
    "扼要重述一下，我们使用或调用一个如`lexical_diversity()` 这样的函数，只要输入它的名字后面跟一个左括号，再输入文本名字，然后是右括号。这些括号经常出现，它们的作用是分割任务名—— 如`lexical_diversity()`，与任务将要处理的数据 ——如`text3`。调用函数时放在参数位置的数据值叫做函数的实参。\n",
    "\n",
    "在本章中你已经遇到了几个函数，如`len()`, `set()` 和`sorted()`。通常我们会在函数名后面加一对空括号，像`len()`中的那样，这只是为了表明这是一个函数而不是其他的Python 表达式。函数是编程中的一个重要概念，我们在一开始提到它们，是为了让新同学体会编程的强大和富有创造力。如果你现在觉得有点混乱，请不要担心。\n",
    "\n",
    "稍后我们将看到如何使用函数列表显示数据，像表[1.1](http://www.nltk.org/book/ch01.html#tab-brown-types)显示的那样。表的每一行将包含不同数据的相同的计算，我们用函数来做这种重复性的工作。\n",
    "\n",
    "表 1.1：\n",
    "\n",
    "*Brown 语料库*中各种文体的词汇多样性\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "993b2e77",
   "metadata": {},
   "outputs": [],
   "source": [
    "sent1 = ['Call', 'me', 'Ishmael', '.'] # 定义列表并赋值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2cb3cb0d",
   "metadata": {},
   "source": [
    "在提示符后面，我们输入自己命名的`sent1`，后跟一个等号，然后是一些引用的词汇，中间用逗号分割并用括号包围。这个方括号内的东西在Python 中叫做列表：它就是我们存储文本的方式。我们可以通过输入它的名字来查阅它 [# 1](http://www.nltk.org/book/ch01.html#inspect-var)。我们可以查询它的长度 [# 2](http://www.nltk.org/book/ch01.html#len-sent)。我们甚至可以对它调用我们自己的函数`lexical_diversity()`[# 3](http://www.nltk.org/book/ch01.html#apply-function)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "02006e4f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Call', 'me', 'Ishmael', '.']"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent1 # 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5e1f24cd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(sent1) # 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "628eed6a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lexical_diversity(sent1) # 3 sent1 列表中不重复词全文占比"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d83c9c0",
   "metadata": {},
   "source": [
    "还定义了其它几个列表，分别对应每个文本开始的句子，`sent2` … `sent9`。在这里我们检查其中的两个；你可以自己在Python 解释器中尝试其余的（如果你得到一个错误说`sent2` 没有定义，你需要先输入`from nltk.book import *`）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "c193d610",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['The',\n",
       " 'family',\n",
       " 'of',\n",
       " 'Dashwood',\n",
       " 'had',\n",
       " 'long',\n",
       " 'been',\n",
       " 'settled',\n",
       " 'in',\n",
       " 'Sussex',\n",
       " '.']"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent2 # 定义了几个列表，对应每个文本开始的句子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "046dc0e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['In',\n",
       " 'the',\n",
       " 'beginning',\n",
       " 'God',\n",
       " 'created',\n",
       " 'the',\n",
       " 'heaven',\n",
       " 'and',\n",
       " 'the',\n",
       " 'earth',\n",
       " '.']"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac733f8a",
   "metadata": {},
   "source": [
    "注意\n",
    "\n",
    "**轮到你来：** 通过输入名字、等号和一个单词列表, 组建几个你自己的句子，如`ex1 = ['Monty', 'Python', 'and', 'the', 'Holy', 'Grail']`。重复一些我们先前在第[1](http://www.nltk.org/book/ch01.html#sec-computing-with-language-texts-and-words) 节看到的其他Python 操作，如：`sorted(ex1)`, `len(set(ex1))`, `ex1.count('the')`。\n",
    "\n",
    "令人惊喜的是，我们可以对列表使用Python 加法运算。两个列表相加 [# 1](http://www.nltk.org/book/ch01.html#list-plus-list)创造出一个新的列表，包括第一个列表的全部，后面跟着第二个列表的全部。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "3eaa4fb9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Monty', 'Python', 'and', 'the', 'Holy', 'Grail']"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "['Monty', 'Python'] + ['and', 'the', 'Holy', 'Grail'] "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e42845a2",
   "metadata": {},
   "source": [
    "注意\n",
    "\n",
    "这种加法的特殊用法叫做连接；它将多个列表组合为一个列表。我们可以把句子连接起来组成一个文本。\n",
    "\n",
    "不必逐字的输入列表，可以使用简短的名字来引用预先定义好的列表。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "c6081cc9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Fellow',\n",
       " '-',\n",
       " 'Citizens',\n",
       " 'of',\n",
       " 'the',\n",
       " 'Senate',\n",
       " 'and',\n",
       " 'of',\n",
       " 'the',\n",
       " 'House',\n",
       " 'of',\n",
       " 'Representatives',\n",
       " ':',\n",
       " 'Call',\n",
       " 'me',\n",
       " 'Ishmael',\n",
       " '.']"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent4 + sent1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a857c03",
   "metadata": {},
   "source": [
    "如果我们想要向链表中增加一个元素该如何？这种操作叫做追加。当我们对一个列表使用`append()`时，列表自身会随着操作而更新。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "6897ce20",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Call', 'me', 'Ishmael', '.', 'Some']"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent1.append(\"Some\") # 向 sent1 列表追加元素\n",
    "sent1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5e3e5bb",
   "metadata": {},
   "source": [
    "## 2.2 索引列表\n",
    "\n",
    "正如我们已经看到的，Python 中的一个文本是一个单词的列表，用括号和引号的组合来表示。就像处理一页普通的文本，我们可以使用`len(text1)` 计算`text1`的词数，使用`text1.count('heaven')`计算一个文本中出现的特定的词，如`'heaven'`。\n",
    "\n",
    "稍微花些耐心，我们可以挑选出打印出来的文本中的第1 个、第173 个或第14278个词。类似的，我们也可以通过它在列表中出现的次序找出一个Python 列表的元素。表示这个位置的数字叫做这个元素的索引。在文本名称后面的方括号里写下索引，Python 就会表示出文本中这个索引处如`173`的元素："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "a42fc54b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'awaken'"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text4[173] # text4 文本索引为173的元素"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb6c0ff6",
   "metadata": {},
   "source": [
    "我们也可以反过来做；找出一个词第一次出现的索引："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "fa992eab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "173"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text4.index('awaken') # 所指定词第一次出现的索引位置"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9824a289",
   "metadata": {},
   "source": [
    "索引是一种常见的用来获取文本中词汇的方式，或者更一般的，访问列表中的元素的方式。Python 也允许我们获取子列表，从大文本中任意抽取语言片段，术语叫做切片。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "541b1784",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['U86',\n",
       " 'thats',\n",
       " 'why',\n",
       " 'something',\n",
       " 'like',\n",
       " 'gamefly',\n",
       " 'is',\n",
       " 'so',\n",
       " 'good',\n",
       " 'because',\n",
       " 'you',\n",
       " 'can',\n",
       " 'actually',\n",
       " 'play',\n",
       " 'a',\n",
       " 'full',\n",
       " 'game',\n",
       " 'without',\n",
       " 'buying',\n",
       " 'it']"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text5[16715:16735] # 列表切片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "b7c73010",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['We',\n",
       " \"'\",\n",
       " 're',\n",
       " 'an',\n",
       " 'anarcho',\n",
       " '-',\n",
       " 'syndicalist',\n",
       " 'commune',\n",
       " '.',\n",
       " 'We',\n",
       " 'take',\n",
       " 'it',\n",
       " 'in',\n",
       " 'turns',\n",
       " 'to',\n",
       " 'act',\n",
       " 'as',\n",
       " 'a',\n",
       " 'sort',\n",
       " 'of',\n",
       " 'executive',\n",
       " 'officer',\n",
       " 'for',\n",
       " 'the',\n",
       " 'week']"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text6[1600:1625]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b8fabf8",
   "metadata": {},
   "source": [
    "索引有一些微妙，我们将在一个构造的句子的帮助下探讨这些："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "e17d9526",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'word1'"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent = ['word1', 'word2', 'word3', 'word4', 'word5', \\\n",
    "         'word6', 'word7', 'word8', 'word9', 'word10']\n",
    "sent[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5c9c3c00",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'word10'"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[9]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa1a2d66",
   "metadata": {},
   "source": [
    "请注意，索引从零开始：`sent` 第0 个元素写作`sent[0]`，是第一个单词`'word1'`，而`sent` 的第9 个元素是`'word10'`。原因很简单：Python 从计算机内存中的列表获取内容的时候，它已经位于第一个元素；我们要告诉它向前多少个元素。因此，向前0 个元素使它留在第一个元素上。\n",
    "\n",
    "注意\n",
    "\n",
    "这种从零算起的做法刚开始接触会有些混乱，但这是现代编程语言普遍使用的。如果你已经掌握了19XY 是20 世纪中的一年这样的计数世纪的系统，或者如果你生活在一个建筑物楼层编号从1 开始的国家，你很开就会掌握它的窍门，步行n-1级楼梯到第n 层。\n",
    "\n",
    "现在，如果我们不小心使用的索引过大就会得到一个错误："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "e9212501",
   "metadata": {},
   "outputs": [
    {
     "ename": "IndexError",
     "evalue": "list index out of range",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mIndexError\u001b[0m                                Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[41], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43msent\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m]\u001b[49m\n",
      "\u001b[1;31mIndexError\u001b[0m: list index out of range"
     ]
    }
   ],
   "source": [
    "sent[10]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df93532a",
   "metadata": {},
   "source": [
    "这次不是一个语法错误，因为程序片段在语法上是正确的。相反，它是一个运行时错误，它会产生一个`回溯`消息显示错误的上下文、错误的名称：`IndexError` 以及简要的解释说明。\n",
    "\n",
    "让我们再次使用构造的句子仔细看看切片。这里我们发现切片`5:8` 包含`sent` 中索引为5，6 和7的元素："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "cd40299c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['word6', 'word7', 'word8']"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[5:8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "e195e6c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'word6'"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "81925fe5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'word7'"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[6]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "24324433",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'word8'"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[7]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "026814bc",
   "metadata": {},
   "source": [
    "按照惯例，`m:n` 表示元素m…n-1。正如下一个例子显示的那样，如果切片从列表第一个元素开始，我们可以省略第一个数字 [# 1](http://www.nltk.org/book/ch01.html#slice2), 如果切片到列表最后一个元素处结尾，我们可以省略第二个数字 [# 2](http://www.nltk.org/book/ch01.html#slice3)："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "061acb02",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['word1', 'word2', 'word3']"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[:3] # 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "f9b00e3c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['among',\n",
       " 'the',\n",
       " 'merits',\n",
       " 'and',\n",
       " 'the',\n",
       " 'happiness',\n",
       " 'of',\n",
       " 'Elinor',\n",
       " 'and',\n",
       " 'Marianne',\n",
       " ',',\n",
       " 'let',\n",
       " 'it',\n",
       " 'not',\n",
       " 'be',\n",
       " 'ranked',\n",
       " 'as',\n",
       " 'the',\n",
       " 'least',\n",
       " 'considerable',\n",
       " ',',\n",
       " 'that',\n",
       " 'though',\n",
       " 'sisters',\n",
       " ',',\n",
       " 'and',\n",
       " 'living',\n",
       " 'almost',\n",
       " 'within',\n",
       " 'sight',\n",
       " 'of',\n",
       " 'each',\n",
       " 'other',\n",
       " ',',\n",
       " 'they',\n",
       " 'could',\n",
       " 'live',\n",
       " 'without',\n",
       " 'disagreement',\n",
       " 'between',\n",
       " 'themselves',\n",
       " ',',\n",
       " 'or',\n",
       " 'producing',\n",
       " 'coolness',\n",
       " 'between',\n",
       " 'their',\n",
       " 'husbands',\n",
       " '.',\n",
       " 'THE',\n",
       " 'END']"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text2[141525:] # 2 "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "393e5e1a",
   "metadata": {},
   "source": [
    "我们可以通过赋值给它的索引值来修改列表中的元素。在接下来的例子中，我们把`sent[0]` 放在等号左侧 [# \n",
    "1](http://www.nltk.org/book/ch01.html#list-assignment)。我们也可以用新内容替换掉一整个片段 [# 2](http://www.nltk.org/book/ch01.html#slice-assignment)。最后一个尝试报错的原因是这个链表只有四个元素而要获取其后面的元素就产生了错误 [# 3](http://www.nltk.org/book/ch01.html#list-error)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "75f4871d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[0] = 'First' # 1\n",
    "sent[9] = 'Last'\n",
    "len(sent)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "7efad0e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['First', 'Second', 'Third', 'Last']"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent[1:9] = ['Second', 'Third'] # 2\n",
    "sent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "336ee3be",
   "metadata": {},
   "outputs": [
    {
     "ename": "IndexError",
     "evalue": "list index out of range",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mIndexError\u001b[0m                                Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[52], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43msent\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m9\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;66;03m# 3\u001b[39;00m\n",
      "\u001b[1;31mIndexError\u001b[0m: list index out of range"
     ]
    }
   ],
   "source": [
    "sent[9] # 3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40b10830",
   "metadata": {},
   "source": [
    "注意\n",
    "\n",
    "**轮到你来：**花几分钟定义你自己的句子，使用前文中的方法修改个别词和词组（切片）。尝试本章结尾关于列表的练习，检验你是否理解。\n",
    "\n",
    "## 2.3 变量\n",
    "\n",
    "从第[1](http://www.nltk.org/book/ch01.html#sec-computing-with-language-texts-and-words)节一开始，你已经访问过名为`text1`, `text2` 等的文本。像这样只输入简短的名字来引用一本250,000 字的书节省了很多打字时间。一般情况下，我们可以对任何我们关心的计算命名。我们在前面的小节中已经这样做了，例如定义一个变量变量 `sent1`，如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "89698080",
   "metadata": {},
   "outputs": [],
   "source": [
    "sent1 = ['Call', 'me', 'Ishmael', '.']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e28e1de",
   "metadata": {},
   "source": [
    "这样的语句形式是：*变量 = 表达式*。Python 将计算右边的表达式把结果保存在变量中。这个过程叫做赋值。它并不产生任何输出，你必须在新的一行输入变量的名字来检查它的内容。等号可能会有些误解，因为信息是从右边流到左边的。你把它想象成一个左箭头可能会有帮助。变量的名字可以是任何你喜欢的名字，如`my_sent`, `sentence`, `xyzzy`。变量必须以字母开头，可以包含数字和下划线。下面是变量和赋值的一些例子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "29dd9f2a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['bold', 'Sir', 'Robin']"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_sent = ['Bravely', 'bold', 'Sir', 'Robin', ',', 'rode', \\\n",
    "    'forth', 'from', 'Camelot', '.']\n",
    "noun_phrase = my_sent[1:4]\n",
    "noun_phrase"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "9c6484a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Robin', 'Sir', 'bold']"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wOrDs = sorted(noun_phrase)\n",
    "wOrDs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a31f9621",
   "metadata": {},
   "source": [
    "请记住，排序表中大写字母出现在小写字母之前。\n",
    "\n",
    "注意\n",
    "\n",
    "请注意，在前面的例子中，我们将`my_sent` 的定义分成两行。Python 表达式可以被分割成多行，只要它出现在任何一种括号内。Python 使用\"`...`\"提示符表示期望更多的输入。在这些连续的行中有多少缩进都没有关系，只是加入缩进通常会便于阅读。\n",
    "\n",
    "最好是选择有意义的变量名，它能提醒你代码的含义，也帮助别人读懂你的Python 代码。Python 并不会理解这些名称的意义;它只是盲目的服从你的指令，如果你输入一些令人困惑的代码，例如`one = 'two'` 或`two = 3`,它也不会反对。唯一的限制是变量名不能是Python 的保留字，如`def`, `if`, `not`, 和`import`。如果你使用了保留字，Python 会产生一个语法错误："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "99926c5f",
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (3303447762.py, line 1)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  Cell \u001b[1;32mIn[56], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m    not = 'Camelot'\u001b[0m\n\u001b[1;37m        ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "not = 'Camelot'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5954c9c7",
   "metadata": {},
   "source": [
    "我们将经常使用变量来保存计算的中间步骤，尤其是当这样做使代码更容易读懂时。因此，`len(set(text1))` 也可以写作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "8c10779d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "19317"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vocab = set(text1)\n",
    "vocab_size = len(vocab)\n",
    "vocab_size"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9c6d70c",
   "metadata": {},
   "source": [
    "小心！\n",
    "\n",
    "为Python 变量选择名称（标识符）时请注意。首先，应该以字母开始，后面跟数字（`0` 到`9`）或字母。因此，`abc23` 是好的，但是`23abc` 会导致一个语法错误。名称是大小写敏感的，这意味着`myVar` 和`myvar` 是不同的变量。变量名不能包含空格，但可以用下划线把单词分开，例如`my_var`。注意不要插入连字符来代替下划线：`my-var` 不对，因为Python 会把\"`-`\"解释为减号。\n",
    "\n",
    "## 2.4 字符串\n",
    "\n",
    "我们用来访问列表元素的一些方法也可以用在单独的词或字符串上。例如可以把一个字符串指定给一个变量 [# 1](http://www.nltk.org/book/ch01.html#assign-string)，索引一个字符串 [# 2](http://www.nltk.org/book/ch01.html#index-string)，切片一个字符串 [# 3](http://www.nltk.org/book/ch01.html#slice-string)："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "6e6a3ad2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'M'"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "name = 'Monty' # 1\n",
    "name[0] # 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "9e6f9583",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Mont'"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "name[:4] # 3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "639dc9a3",
   "metadata": {},
   "source": [
    "我们还可以对字符串执行乘法和加法："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "a747b803",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'MontyMonty'"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "name * 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "27eced4f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Monty!'"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "name + '!'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d3c26e08",
   "metadata": {},
   "source": [
    "我们可以把列表中的单词连接起来组成单个字符串，或者把字符串分割成一个列表，如下面所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "f0c6964c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Monty Python'"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "' '.join(['Monty', 'Python'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "a1ad6d31",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Monty', 'Python']"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'Monty Python'.split()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b9f322e1",
   "metadata": {},
   "source": [
    "我们将在第[3](http://www.nltk.org/book/ch03.html#chap-words)章回到字符串的主题。目前，我们已经有了两个重要的基石——列表和字符串——已经准备好可以重新做一些语言分析了。\n",
    "\n",
    "## 3 计算语言：简单的统计\n",
    "\n",
    "让我们重新开始探索用我们的计算资源处理大量文本的方法。我们在第[1](http://www.nltk.org/book/ch01.html#sec-computing-with-language-texts-and-words)节已经开始讨论了，在那里我们看到如何搜索词及其上下文，如何汇编一个文本中的词汇，如何产生一种文体的随机文本等。\n",
    "\n",
    "在本节中，我们重新拾起是什么让一个文本不同与其他文本这样的问题，并使用程序自动寻找特征词汇和文字表达。正如在第[1](http://www.nltk.org/book/ch01.html#sec-computing-with-language-texts-and-words)节中那样，你可以通过复制它们到Python 解释器中来尝试Python 语言的新特征，你将在下一节中系统的了解这些功能。\n",
    "\n",
    "在这之前，你可能会想通过预测下面的代码的输出来检查你对上一节的理解。你可以使用解释器来检查你是否正确。如果你不确定如何做这个任务，你最好在继续之前复习一下上一节的内容。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "455abdcf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['said', 'than']"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "saying = ['After', 'all', 'is', 'said', 'and', 'done', \\\n",
    "              'more', 'is', 'said', 'than', 'done']\n",
    "tokens = set(saying)\n",
    "tokens = sorted(tokens)\n",
    "tokens[-2:] # what output do you expect here?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ebe459da",
   "metadata": {},
   "source": [
    "## 3.1 频率分布\n",
    "\n",
    "我们如何能自动识别文本中最能体现文本的主题和风格的词汇？试想一下，要找到一本书中使用最频繁的50 个词你会怎么做？一种方法是为每个词项设置一个计数器，如图[3.1](http://www.nltk.org/book/ch01.html#fig-tally)显示的那样。计数器可能需要几千行，这将是一个极其繁琐的过程——如此繁琐以至于我们宁愿把任务交给机器来做。"
   ]
  },
  {
   "attachments": {
    "3.1.webp": {
     "image/webp": "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"
    }
   },
   "cell_type": "markdown",
   "id": "4e2fedfb",
   "metadata": {},
   "source": [
    "![3.1.webp](attachment:3.1.webp)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a77d0272",
   "metadata": {},
   "source": [
    "图 3.1：计数一个文本中出现的词（频率分布）\n",
    "\n",
    "图[3.1](http://www.nltk.org/book/ch01.html#fig-tally) 中的表被称为频率分布，它告诉我们在文本中的每一个词项的频率。（一般情况下，它能计数任何观察得到的事件。）这是一个“分布”因为它告诉我们文本中单词词符的总数是如何分布在词项中的。因为我们经常需要在语言处理中使用频率分布，NLTK 中内置了它们。让我们使用`FreqDist` 寻找*《白鲸记》*中最常见的50 个词："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "29cb3671",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<FreqDist with 19317 samples and 260819 outcomes>\n"
     ]
    }
   ],
   "source": [
    "fdist1 = FreqDist(text1) # 1  # text1 文本中每一个词的频率分布，即出现次数\n",
    "print(fdist1) # 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "6d3c5b2f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(',', 18713),\n",
       " ('the', 13721),\n",
       " ('.', 6862),\n",
       " ('of', 6536),\n",
       " ('and', 6024),\n",
       " ('a', 4569),\n",
       " ('to', 4542),\n",
       " (';', 4072),\n",
       " ('in', 3916),\n",
       " ('that', 2982),\n",
       " (\"'\", 2684),\n",
       " ('-', 2552),\n",
       " ('his', 2459),\n",
       " ('it', 2209),\n",
       " ('I', 2124),\n",
       " ('s', 1739),\n",
       " ('is', 1695),\n",
       " ('he', 1661),\n",
       " ('with', 1659),\n",
       " ('was', 1632),\n",
       " ('as', 1620),\n",
       " ('\"', 1478),\n",
       " ('all', 1462),\n",
       " ('for', 1414),\n",
       " ('this', 1280),\n",
       " ('!', 1269),\n",
       " ('at', 1231),\n",
       " ('by', 1137),\n",
       " ('but', 1113),\n",
       " ('not', 1103),\n",
       " ('--', 1070),\n",
       " ('him', 1058),\n",
       " ('from', 1052),\n",
       " ('be', 1030),\n",
       " ('on', 1005),\n",
       " ('so', 918),\n",
       " ('whale', 906),\n",
       " ('one', 889),\n",
       " ('you', 841),\n",
       " ('had', 767),\n",
       " ('have', 760),\n",
       " ('there', 715),\n",
       " ('But', 705),\n",
       " ('or', 697),\n",
       " ('were', 680),\n",
       " ('now', 646),\n",
       " ('which', 640),\n",
       " ('?', 637),\n",
       " ('me', 627),\n",
       " ('like', 624)]"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist1.most_common(50) # 3 该文本中最常见的 50 个词"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "4a361d13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "906"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist1['whale'] # 指定词出现频次"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7fd3594",
   "metadata": {},
   "source": [
    "第一次调用`FreqDist`时，传递文本的名称作为参数 [# 1](http://www.nltk.org/book/ch01.html#freq-dist-call)。我们可以看到已经被计算出来的 *《白鲸记》* 中的总的词数（“outcomes”）—— 260,819 [# 2](http://www.nltk.org/book/ch01.html#freq-dist-inspect)。表达式`most_common(50)` 给出文本中50 个出现频率最高的单词类型 [# 3](http://www.nltk.org/book/ch01.html#freq-dist-most-common)。\n",
    "\n",
    "注意\n",
    "\n",
    "**轮到你来：**使用`text2`尝试前面的频率分布的例子。注意正确使用括号和大写字母。如果你得到一个错误消息`NameError: name 'FreqDist' is not defined`，你需要在一开始输入`from nltk.book import *`\n",
    "\n",
    "上一个例子中是否有什么词有助于我们把握这个文本的主题或风格呢？只有一个词，whale，稍微有些信息量！它出现了超过900 次。其余的词没有告诉我们关于文本的信息；它们只是“管道”英语。这些词在文本中占多少比例？我们可以产生一个这些词汇的累积频率图，使用`fdist1.plot(50, cumulative=True)` 来生成[3.2](http://www.nltk.org/book/ch01.html#fig-fdist-moby) 中的图。这50 个词占了书的将近一半！"
   ]
  },
  {
   "attachments": {
    "3.2.webp": {
     "image/webp": "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"
    }
   },
   "cell_type": "markdown",
   "id": "3e6d5548",
   "metadata": {},
   "source": [
    "![3.2.webp](attachment:3.2.webp)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "88f62a72",
   "metadata": {},
   "source": [
    "图 3.2: *《白鲸记》*中50 个最常用词的累积频率图：这些词占了所有词符的将近一半。\n",
    "\n",
    "如果高频词对我们没有帮助，那些只出现了一次的词（所谓的hapaxes）又如何呢？输入`fdist1.hapaxes()` 来查看它们。这个列表包含lexicographer, cetological, contraband, expostulations 以及其他9,000 多个。看来低频词太多了，没看到上下文我们很可能有一半的hapaxes 猜不出它们的意义！既然高频词和低频词都没有帮助，我们需要尝试其他的办法。\n",
    "\n",
    "## 3.2 细粒度的选择词\n",
    "\n",
    "接下来，让我们看看文本中的*长*词，也许它们有更多的特征和信息量。为此我们采用集合论的一些符号。我们想要找出文本词汇表长度中超过15 个字符的词。我们定义这个性质为P，则P(w) 为真当且仅当词w 的长度大余15 个字符。现在我们可以用[(1a)](http://www.nltk.org/book/ch01.html#ex-set-comprehension-math) 中的数学集合符号表示我们感兴趣的词汇。它的含义是：此集合中所有w 都满足w 是集合V V（词汇表）的一个元素且w有性质P。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "badef6e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['CIRCUMNAVIGATION',\n",
       " 'Physiognomically',\n",
       " 'apprehensiveness',\n",
       " 'cannibalistically',\n",
       " 'characteristically',\n",
       " 'circumnavigating',\n",
       " 'circumnavigation',\n",
       " 'circumnavigations',\n",
       " 'comprehensiveness',\n",
       " 'hermaphroditical',\n",
       " 'indiscriminately',\n",
       " 'indispensableness',\n",
       " 'irresistibleness',\n",
       " 'physiognomically',\n",
       " 'preternaturalness',\n",
       " 'responsibilities',\n",
       " 'simultaneousness',\n",
       " 'subterraneousness',\n",
       " 'supernaturalness',\n",
       " 'superstitiousness',\n",
       " 'uncomfortableness',\n",
       " 'uncompromisedness',\n",
       " 'undiscriminating',\n",
       " 'uninterpenetratingly']"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V = set(text1) # 获取文本中所有不重复词\n",
    "long_words = [w for w in V if len(w) > 15] # 获取不重复词列表中字符超过15的词\n",
    "sorted(long_words)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4b30b7c8",
   "metadata": {},
   "source": [
    "对于词汇表`V` 中的每一个词`w`，我们检查`len(w)` 是否大于15；所有其他词汇将被忽略。我们将在后面更仔细的讨论这里的语法。\n",
    "\n",
    "注意\n",
    "\n",
    "**轮到你来：** 在Python 解释器中尝试上面的表达式，改变文本和长度条件做一些实验。如果改变变量名，你的结果会产生什么变化吗，如使用`[word for word in vocab if ...]`？\n",
    "\n",
    "让我们回到寻找文本特征词汇的任务上来。请注意，`text4` 中的长词反映国家主题 — constitutionally, transcontinental — 而`text5` 中的长词反映的不是真正的内容boooooooooooglyyyyyy 和 yuuuuuuuuuuuummmmmmmmmmmm。我们是否已经成功的自动提取出文本的特征词汇呢？好的，这些很长的词通常是hapaxes（即唯一的），也许找出*频繁出现的*长词会更好。这样看起来更有前途，因为这样忽略了短高频词（如the）和长低频词（如antiphilosophists）。以下是聊天语料库中所有长度超过7 个字符，且出现次数超过7 次的词："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "321977f2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['#14-19teens',\n",
       " '#talkcity_adults',\n",
       " '((((((((((',\n",
       " '........',\n",
       " 'Question',\n",
       " 'actually',\n",
       " 'anything',\n",
       " 'computer',\n",
       " 'cute.-ass',\n",
       " 'everyone',\n",
       " 'football',\n",
       " 'innocent',\n",
       " 'listening',\n",
       " 'remember',\n",
       " 'seriously',\n",
       " 'something',\n",
       " 'together',\n",
       " 'tomorrow',\n",
       " 'watching']"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist5 = FreqDist(text5) # text5 文本中所有词的频率分布\n",
    "sorted(w for w in set(text5) if len(w) > 7 and fdist5[w] > 7) # 长度大于7的词"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c64a9393",
   "metadata": {},
   "source": [
    "注意我们是如何使用两个条件：`len(w) > 7` 保证词长都超过七个字母，`fdist5[w] > 7` 保证这些词出现超过7 次。最后，我们已成功地自动识别出与文本内容相关的高频词。这很小的一步却是一个重要的里程碑：一小块代码，处理数以万计的词，产生一些有信息量的输出。\n",
    "\n",
    "## 3.3 词语搭配和双连词\n",
    "\n",
    "一个搭配是异乎寻常地经常在一起出现的词序列。red wine 是一个搭配，而the wine 不是。搭配的一个特点是其中的词不能被类似的词置换。例如：maroon wine（粟色酒）听起来就很奇怪。\n",
    "\n",
    "要获取搭配，我们先从提取文本词汇中的词对，也就是双连词开始。使用函数`bigrams()`很容易实现："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "0d00981d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('more', 'is'), ('is', 'said'), ('said', 'than'), ('than', 'done')]"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(bigrams(['more', 'is', 'said', 'than', 'done'])) # 从指定单词列表组成并返回双连词列表"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a486ad6",
   "metadata": {},
   "source": [
    "注意\n",
    "\n",
    "如果上面省掉`list()`，只输入`bigrams(['more', ...])`，你将看到`<generator object bigrams at 0x10fb8b3a8>` 的输出形式。这是 Python 的方式表示它已经准备好要计算一个序列，在这里是双连词。现在，你只需要知道告诉Python 使用`list()`将它转换成一个列表。\n",
    "\n",
    "在这里我们看到词对than-done是一个双连词，在Python 中写成`('than', 'done')`。现在，搭配基本上就是频繁的双连词，除非我们更加注重包含不常见词的的情况。特别的，我们希望找到比我们基于单个词的频率预期得到的更频繁出现的双连词。`collocations()` 函数为我们做这些。我们将在以后看到它是如何工作。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "1f1fd9dc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "United States; fellow citizens; years ago; four years; Federal\n",
      "Government; General Government; American people; Vice President; God\n",
      "bless; Chief Justice; one another; fellow Americans; Old World;\n",
      "Almighty God; Fellow citizens; Chief Magistrate; every citizen; Indian\n",
      "tribes; public debt; foreign nations\n"
     ]
    }
   ],
   "source": [
    "text4.collocations() # 更频繁的双连词"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "30cba42d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "would like; medium build; social drinker; quiet nights; non smoker;\n",
      "long term; age open; Would like; easy going; financially secure; fun\n",
      "times; similar interests; Age open; weekends away; poss rship; well\n",
      "presented; never married; single mum; permanent relationship; slim\n",
      "build\n"
     ]
    }
   ],
   "source": [
    "text8.collocations()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "262a59c5",
   "metadata": {},
   "source": [
    "文本中出现的搭配很能体现文本的风格。为了找到red wine这个搭配，我们将需要处理更大的文本。\n",
    "\n",
    "## 3.4 计数其他东西\n",
    "\n",
    "计数词汇是有用的，我们也可以计数其他东西。例如，我们可以查看文本中词长的分布，通过创造一长串数字的列表的`FreqDist`，其中每个数字是文本中对应词的长度："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "01fb3ea3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1,\n",
       " 4,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 8,\n",
       " 4,\n",
       " 1,\n",
       " 9,\n",
       " 1,\n",
       " 1,\n",
       " 8,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 11,\n",
       " 5,\n",
       " 2,\n",
       " 1,\n",
       " 7,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 10,\n",
       " 2,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 3,\n",
       " 8,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 12,\n",
       " 1,\n",
       " 9,\n",
       " 11,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 7,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 2,\n",
       " 7,\n",
       " 6,\n",
       " 8,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 9,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 3,\n",
       " 6,\n",
       " 7,\n",
       " 3,\n",
       " 1,\n",
       " 7,\n",
       " 9,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 6,\n",
       " 5,\n",
       " 6,\n",
       " 3,\n",
       " 13,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 8,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 6,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 9,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 7,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 10,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 11,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 1,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 2,\n",
       " 10,\n",
       " 1,\n",
       " 1,\n",
       " 10,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 9,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 11,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 8,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 9,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 11,\n",
       " 8,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 4,\n",
       " 8,\n",
       " 3,\n",
       " 6,\n",
       " 1,\n",
       " 6,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 7,\n",
       " 2,\n",
       " 8,\n",
       " 6,\n",
       " 9,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 5,\n",
       " 7,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 10,\n",
       " 1,\n",
       " 6,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 9,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 8,\n",
       " 5,\n",
       " 10,\n",
       " 1,\n",
       " 7,\n",
       " 9,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 8,\n",
       " 1,\n",
       " 3,\n",
       " 9,\n",
       " 6,\n",
       " 8,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 8,\n",
       " 3,\n",
       " 7,\n",
       " 7,\n",
       " 9,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 4,\n",
       " 9,\n",
       " 1,\n",
       " 5,\n",
       " 8,\n",
       " 3,\n",
       " 6,\n",
       " 8,\n",
       " 2,\n",
       " 12,\n",
       " 1,\n",
       " 2,\n",
       " 9,\n",
       " 1,\n",
       " 8,\n",
       " 4,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 13,\n",
       " 4,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 9,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 11,\n",
       " 1,\n",
       " 9,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 11,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 9,\n",
       " 2,\n",
       " 4,\n",
       " 8,\n",
       " 1,\n",
       " 6,\n",
       " 5,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 5,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 6,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 3,\n",
       " 9,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 1,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 3,\n",
       " 5,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 10,\n",
       " 10,\n",
       " 7,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 9,\n",
       " 1,\n",
       " 5,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 7,\n",
       " 5,\n",
       " 3,\n",
       " 3,\n",
       " 9,\n",
       " 3,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 5,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 6,\n",
       " 3,\n",
       " 8,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 7,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 8,\n",
       " 2,\n",
       " 4,\n",
       " 1,\n",
       " 8,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 4,\n",
       " 6,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 3,\n",
       " 10,\n",
       " 6,\n",
       " 8,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 6,\n",
       " 14,\n",
       " 7,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 7,\n",
       " 5,\n",
       " 6,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 9,\n",
       " 6,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 5,\n",
       " 4,\n",
       " 2,\n",
       " 7,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 2,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 6,\n",
       " 9,\n",
       " 3,\n",
       " 8,\n",
       " 7,\n",
       " 1,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 7,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 3,\n",
       " 6,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 2,\n",
       " 2,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 6,\n",
       " 7,\n",
       " 6,\n",
       " 6,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 13,\n",
       " 4,\n",
       " 4,\n",
       " 5,\n",
       " 7,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 9,\n",
       " 2,\n",
       " 3,\n",
       " 10,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 6,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 3,\n",
       " 8,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 7,\n",
       " 6,\n",
       " 4,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 6,\n",
       " 3,\n",
       " 11,\n",
       " 6,\n",
       " 7,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 8,\n",
       " 3,\n",
       " 2,\n",
       " 9,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 7,\n",
       " 1,\n",
       " 5,\n",
       " 4,\n",
       " 6,\n",
       " 3,\n",
       " 5,\n",
       " 8,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 5,\n",
       " 3,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 3,\n",
       " 3,\n",
       " 6,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 7,\n",
       " 4,\n",
       " 7,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 8,\n",
       " 5,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 5,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 5,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 7,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 4,\n",
       " 6,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 7,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 4,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 5,\n",
       " 4,\n",
       " 1,\n",
       " 2,\n",
       " ...]"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[len(w) for w in text1] # 1 根据每个单词长度获取全网词长分别"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "03b0359f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<FreqDist with 19 samples and 260819 outcomes>\n"
     ]
    }
   ],
   "source": [
    "fdist = FreqDist(len(w) for w in text1)  # 2 统计文本中最多的长度相同的单词\n",
    "print(fdist)  # 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "f980c520",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "FreqDist({3: 50223, 1: 47933, 4: 42345, 2: 38513, 5: 26597, 6: 17111, 7: 14399, 8: 9966, 9: 6428, 10: 3528, ...})"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist # 3 个字母的词最多、1 个字母的词第二多……"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0dc5fe31",
   "metadata": {},
   "source": [
    "我们以导出`text1` 中每个词的长度的列表开始 [# 1](http://www.nltk.org/book/ch01.html#word-lengths)，然后`FreqDist` 计数列表中每个数字出现的次数 [# 2](http://www.nltk.org/book/ch01.html#freq-word-lengths)。结果 [# 3](http://www.nltk.org/book/ch01.html#freq-word-lengths-size) 是一个包含25 万左右个元素的分布，每一个元素是一个数字，对应文本中一个词标识符。但是只有20 个不同的元素，从1 到20，因为只有20 个不同的词长。也就是说，有由1 个字符，2 个字符，...，20 个字符组成的词，而没有由21 个或更多字符组成的词。有人可能会问不同长度的词的频率是多少？（例如，文本中有多少长度为4 的词？长度为5 的词是否比长度为4 的词多？等等）。下面我们回答这个问题："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "ae7e9626",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(3, 50223),\n",
       " (1, 47933),\n",
       " (4, 42345),\n",
       " (2, 38513),\n",
       " (5, 26597),\n",
       " (6, 17111),\n",
       " (7, 14399),\n",
       " (8, 9966),\n",
       " (9, 6428),\n",
       " (10, 3528),\n",
       " (11, 1873),\n",
       " (12, 1053),\n",
       " (13, 567),\n",
       " (14, 177),\n",
       " (15, 70),\n",
       " (16, 22),\n",
       " (17, 12),\n",
       " (18, 1),\n",
       " (20, 1)]"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist.most_common() # 最常见长度的单词是三字母单词"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "e841e5cf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "15cc4a60",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50223"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist[3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "005a16e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.19255882431878046"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fdist.freq(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c4cc618",
   "metadata": {},
   "source": [
    "由此我们看到，最频繁的词长度是3，长度为3 的词有50,000 多个（约占书中全部词汇的20％）。虽然我们不会在这里追究它，关于词长的进一步分析可能帮助我们了解作者、文体或语言之间的差异。\n",
    "\n",
    "[3.1](http://www.nltk.org/book/ch01.html#tab-freqdist) 总结了NLTK 频率分布类中定义的函数。\n",
    "\n",
    "表 3.1：\n",
    "\n",
    "NLTK 频率分布类中定义的函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "5d3a691b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Pierre',\n",
       " 'Vinken',\n",
       " ',',\n",
       " '61',\n",
       " 'years',\n",
       " 'old',\n",
       " ',',\n",
       " 'will',\n",
       " 'join',\n",
       " 'the',\n",
       " 'board',\n",
       " 'as',\n",
       " 'a',\n",
       " 'nonexecutive',\n",
       " 'director',\n",
       " 'Nov.',\n",
       " '29',\n",
       " '.']"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "cea9a292",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[',', '61', 'old', ',', 'the', 'as', 'a', '29', '.']"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[w for w in sent7 if len(w) < 4] # 列表 sent7 中长度小雨4 的所有词"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "151c2122",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[',', '61', 'old', ',', 'will', 'join', 'the', 'as', 'a', 'Nov.', '29', '.']"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[w for w in sent7 if len(w) <= 4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "5e619dec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['will', 'join', 'Nov.']"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[w for w in sent7 if len(w) == 4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "c5d291de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Pierre',\n",
       " 'Vinken',\n",
       " ',',\n",
       " '61',\n",
       " 'years',\n",
       " 'old',\n",
       " ',',\n",
       " 'the',\n",
       " 'board',\n",
       " 'as',\n",
       " 'a',\n",
       " 'nonexecutive',\n",
       " 'director',\n",
       " '29',\n",
       " '.']"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[w for w in sent7 if len(w) != 4]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3447c317",
   "metadata": {},
   "source": [
    "所有这些例子都有一个共同的模式：`[w for w in text if` *condition* `]`，其中*condition* 是Python 中的一个“测试”，得到真或者假。在前面的代码例子所示的情况中，条件始终是数值比较。然而，我们也可以使用表[4.2](http://www.nltk.org/book/ch01.html#tab-word-tests) 中列出的函数测试词汇的各种属性。\n",
    "\n",
    "表 4.2:\n",
    "\n",
    "一些词比较运算符\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "06f6e3e7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['comfortableness',\n",
       " 'honourableness',\n",
       " 'immutableness',\n",
       " 'indispensableness',\n",
       " 'indomitableness',\n",
       " 'intolerableness',\n",
       " 'palpableness',\n",
       " 'reasonableness',\n",
       " 'uncomfortableness']"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(w for w in set(text1) if w.endswith('ableness')) # text1 文本中不重复单词结尾是 ableness 的词排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "e01475dd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Sovereignty', 'sovereignties', 'sovereignty']"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(term for term in set(text4) if 'gnt' in term) # text4 文本中不重复单词含 gnt 的词排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "f6185476",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['A',\n",
       " 'Aaaaaaaaah',\n",
       " 'Aaaaaaaah',\n",
       " 'Aaaaaah',\n",
       " 'Aaaah',\n",
       " 'Aaaaugh',\n",
       " 'Aaagh',\n",
       " 'Aaah',\n",
       " 'Aaauggh',\n",
       " 'Aaaugh',\n",
       " 'Aaauugh',\n",
       " 'Aagh',\n",
       " 'Aah',\n",
       " 'Aauuggghhh',\n",
       " 'Aauuugh',\n",
       " 'Aauuuuugh',\n",
       " 'Aauuuves',\n",
       " 'Action',\n",
       " 'Actually',\n",
       " 'African',\n",
       " 'Ages',\n",
       " 'Aggh',\n",
       " 'Agh',\n",
       " 'Ah',\n",
       " 'Ahh',\n",
       " 'Alice',\n",
       " 'All',\n",
       " 'Allo',\n",
       " 'Almighty',\n",
       " 'Alright',\n",
       " 'Am',\n",
       " 'Amen',\n",
       " 'An',\n",
       " 'Anarcho',\n",
       " 'And',\n",
       " 'Angnor',\n",
       " 'Anthrax',\n",
       " 'Antioch',\n",
       " 'Anybody',\n",
       " 'Anyway',\n",
       " 'Apples',\n",
       " 'Aramaic',\n",
       " 'Are',\n",
       " 'Arimathea',\n",
       " 'Armaments',\n",
       " 'Arthur',\n",
       " 'As',\n",
       " 'Ask',\n",
       " 'Assyria',\n",
       " 'At',\n",
       " 'Attila',\n",
       " 'Augh',\n",
       " 'Autumn',\n",
       " 'Auuuuuuuugh',\n",
       " 'Away',\n",
       " 'Ay',\n",
       " 'Ayy',\n",
       " 'B',\n",
       " 'Back',\n",
       " 'Bad',\n",
       " 'Badon',\n",
       " 'Battle',\n",
       " 'Be',\n",
       " 'Beast',\n",
       " 'Bedevere',\n",
       " 'Bedwere',\n",
       " 'Behold',\n",
       " 'Between',\n",
       " 'Beyond',\n",
       " 'Black',\n",
       " 'Bloody',\n",
       " 'Blue',\n",
       " 'Bon',\n",
       " 'Bones',\n",
       " 'Book',\n",
       " 'Bors',\n",
       " 'Brave',\n",
       " 'Bravely',\n",
       " 'Bravest',\n",
       " 'Bread',\n",
       " 'Bridge',\n",
       " 'Bring',\n",
       " 'Bristol',\n",
       " 'Britain',\n",
       " 'Britons',\n",
       " 'Brother',\n",
       " 'Build',\n",
       " 'Burn',\n",
       " 'But',\n",
       " 'By',\n",
       " 'C',\n",
       " 'Caerbannog',\n",
       " 'Camaaaaaargue',\n",
       " 'Camelot',\n",
       " 'Castle',\n",
       " 'Chapter',\n",
       " 'Charge',\n",
       " 'Chaste',\n",
       " 'Cherries',\n",
       " 'Chicken',\n",
       " 'Chickennn',\n",
       " 'Chop',\n",
       " 'Christ',\n",
       " 'Churches',\n",
       " 'Cider',\n",
       " 'Clark',\n",
       " 'Clear',\n",
       " 'Come',\n",
       " 'Concorde',\n",
       " 'Consult',\n",
       " 'Cornwall',\n",
       " 'Could',\n",
       " 'Course',\n",
       " 'Court',\n",
       " 'Crapper',\n",
       " 'Cut',\n",
       " 'Dappy',\n",
       " 'Death',\n",
       " 'Defeat',\n",
       " 'Dennis',\n",
       " 'Did',\n",
       " 'Didn',\n",
       " 'Dingo',\n",
       " 'Dis',\n",
       " 'Divine',\n",
       " 'Do',\n",
       " 'Doctor',\n",
       " 'Does',\n",
       " 'Don',\n",
       " 'Dragon',\n",
       " 'Dramatically',\n",
       " 'Ecky',\n",
       " 'Ector',\n",
       " 'Eee',\n",
       " 'Eh',\n",
       " 'Enchanter',\n",
       " 'England',\n",
       " 'English',\n",
       " 'Erbert',\n",
       " 'Ere',\n",
       " 'Erm',\n",
       " 'Eternal',\n",
       " 'European',\n",
       " 'Even',\n",
       " 'Every',\n",
       " 'Everything',\n",
       " 'Ewing',\n",
       " 'Exactly',\n",
       " 'Excalibur',\n",
       " 'Excuse',\n",
       " 'Explain',\n",
       " 'Far',\n",
       " 'Farewell',\n",
       " 'Father',\n",
       " 'Fetchez',\n",
       " 'Fiends',\n",
       " 'Fine',\n",
       " 'First',\n",
       " 'Firstly',\n",
       " 'Five',\n",
       " 'Follow',\n",
       " 'For',\n",
       " 'Forgive',\n",
       " 'Forward',\n",
       " 'Found',\n",
       " 'Four',\n",
       " 'France',\n",
       " 'Frank',\n",
       " 'French',\n",
       " 'Gable',\n",
       " 'Galahad',\n",
       " 'Gallahad',\n",
       " 'Gawain',\n",
       " 'Get',\n",
       " 'Go',\n",
       " 'God',\n",
       " 'Good',\n",
       " 'Gorge',\n",
       " 'Grail',\n",
       " 'Great',\n",
       " 'Greetings',\n",
       " 'Grenade',\n",
       " 'Guards',\n",
       " 'Guy',\n",
       " 'Ha',\n",
       " 'Hah',\n",
       " 'Hallo',\n",
       " 'Halt',\n",
       " 'Hand',\n",
       " 'Hang',\n",
       " 'Have',\n",
       " 'Haw',\n",
       " 'He',\n",
       " 'Hee',\n",
       " 'Heee',\n",
       " 'Heh',\n",
       " 'Hello',\n",
       " 'Help',\n",
       " 'Herbert',\n",
       " 'Here',\n",
       " 'Hey',\n",
       " 'Hic',\n",
       " 'Hill',\n",
       " 'Himself',\n",
       " 'His',\n",
       " 'Hiyaah',\n",
       " 'Hiyah',\n",
       " 'Hiyya',\n",
       " 'Hm',\n",
       " 'Hmm',\n",
       " 'Ho',\n",
       " 'Hoa',\n",
       " 'Hold',\n",
       " 'Holy',\n",
       " 'Honestly',\n",
       " 'Hoo',\n",
       " 'Hooray',\n",
       " 'How',\n",
       " 'Huh',\n",
       " 'Hurry',\n",
       " 'Huy',\n",
       " 'Huyah',\n",
       " 'Hya',\n",
       " 'Hyy',\n",
       " 'I',\n",
       " 'Idiom',\n",
       " 'Iesu',\n",
       " 'If',\n",
       " 'Iiiiives',\n",
       " 'Iiiives',\n",
       " 'In',\n",
       " 'Is',\n",
       " 'Isn',\n",
       " 'It',\n",
       " 'Ives',\n",
       " 'Jesus',\n",
       " 'Joseph',\n",
       " 'Just',\n",
       " 'Keep',\n",
       " 'King',\n",
       " 'Knight',\n",
       " 'Knights',\n",
       " 'Lady',\n",
       " 'Lake',\n",
       " 'Lancelot',\n",
       " 'Launcelot',\n",
       " 'Lead',\n",
       " 'Leaving',\n",
       " 'Let',\n",
       " 'Lie',\n",
       " 'Like',\n",
       " 'Listen',\n",
       " 'Loimbard',\n",
       " 'Look',\n",
       " 'Looks',\n",
       " 'Lord',\n",
       " 'Lucky',\n",
       " 'Make',\n",
       " 'Man',\n",
       " 'May',\n",
       " 'Maynard',\n",
       " 'Meanwhile',\n",
       " 'Mercea',\n",
       " 'Message',\n",
       " 'Midget',\n",
       " 'Mind',\n",
       " 'Mine',\n",
       " 'Mmm',\n",
       " 'Monsieur',\n",
       " 'More',\n",
       " 'Morning',\n",
       " 'Most',\n",
       " 'Mother',\n",
       " 'Mud',\n",
       " 'Must',\n",
       " 'My',\n",
       " 'N',\n",
       " 'Nador',\n",
       " 'Nay',\n",
       " 'Neee',\n",
       " 'Never',\n",
       " 'Ni',\n",
       " 'Nine',\n",
       " 'Ninepence',\n",
       " 'No',\n",
       " 'None',\n",
       " 'Not',\n",
       " 'Nothing',\n",
       " 'Now',\n",
       " 'Nu',\n",
       " 'O',\n",
       " 'Of',\n",
       " 'Off',\n",
       " 'Oh',\n",
       " 'Ohh',\n",
       " 'Old',\n",
       " 'Olfin',\n",
       " 'On',\n",
       " 'Once',\n",
       " 'One',\n",
       " 'Ooh',\n",
       " 'Oooh',\n",
       " 'Oooo',\n",
       " 'Oooohoohohooo',\n",
       " 'Oooooooh',\n",
       " 'Open',\n",
       " 'Or',\n",
       " 'Order',\n",
       " 'Other',\n",
       " 'Oui',\n",
       " 'Our',\n",
       " 'Over',\n",
       " 'Ow',\n",
       " 'Packing',\n",
       " 'Patsy',\n",
       " 'Pendragon',\n",
       " 'Peng',\n",
       " 'Perhaps',\n",
       " 'Peril',\n",
       " 'Picture',\n",
       " 'Pie',\n",
       " 'Piglet',\n",
       " 'Pin',\n",
       " 'Please',\n",
       " 'Practice',\n",
       " 'Prepare',\n",
       " 'Prince',\n",
       " 'Princess',\n",
       " 'Providence',\n",
       " 'Psalms',\n",
       " 'Pull',\n",
       " 'Pure',\n",
       " 'Put',\n",
       " 'Quick',\n",
       " 'Quickly',\n",
       " 'Quiet',\n",
       " 'Quite',\n",
       " 'Quoi',\n",
       " 'Rather',\n",
       " 'Really',\n",
       " 'Recently',\n",
       " 'Remove',\n",
       " 'Rheged',\n",
       " 'Ridden',\n",
       " 'Right',\n",
       " 'Riiight',\n",
       " 'Robin',\n",
       " 'Robinson',\n",
       " 'Roger',\n",
       " 'Round',\n",
       " 'Run',\n",
       " 'Running',\n",
       " 'S',\n",
       " 'Said',\n",
       " 'Saint',\n",
       " 'Saxons',\n",
       " 'Say',\n",
       " 'Schools',\n",
       " 'See',\n",
       " 'Seek',\n",
       " 'Shall',\n",
       " 'She',\n",
       " 'Shh',\n",
       " 'Shrubber',\n",
       " 'Shrubberies',\n",
       " 'Shut',\n",
       " 'Silence',\n",
       " 'Silly',\n",
       " 'Since',\n",
       " 'Sir',\n",
       " 'Skip',\n",
       " 'So',\n",
       " 'Sorry',\n",
       " 'Speak',\n",
       " 'Splendid',\n",
       " 'Spring',\n",
       " 'Stand',\n",
       " 'Stay',\n",
       " 'Steady',\n",
       " 'Stop',\n",
       " 'Summer',\n",
       " 'Supposing',\n",
       " 'Supreme',\n",
       " 'Surely',\n",
       " 'Swamp',\n",
       " 'Table',\n",
       " 'Tale',\n",
       " 'Tall',\n",
       " 'Tell',\n",
       " 'Thank',\n",
       " 'That',\n",
       " 'The',\n",
       " 'Thee',\n",
       " 'Then',\n",
       " 'There',\n",
       " 'Therefore',\n",
       " 'They',\n",
       " 'This',\n",
       " 'Those',\n",
       " 'Thou',\n",
       " 'Thpppppt',\n",
       " 'Thppppt',\n",
       " 'Thpppt',\n",
       " 'Thppt',\n",
       " 'Three',\n",
       " 'Throw',\n",
       " 'Thsss',\n",
       " 'Thursday',\n",
       " 'Thy',\n",
       " 'Til',\n",
       " 'Tim',\n",
       " 'Tis',\n",
       " 'To',\n",
       " 'Today',\n",
       " 'Together',\n",
       " 'Too',\n",
       " 'Torment',\n",
       " 'Tower',\n",
       " 'True',\n",
       " 'Try',\n",
       " 'Twenty',\n",
       " 'Two',\n",
       " 'U',\n",
       " 'Uh',\n",
       " 'Uhh',\n",
       " 'Ulk',\n",
       " 'Um',\n",
       " 'Umhm',\n",
       " 'Umm',\n",
       " 'Un',\n",
       " 'Unfortunately',\n",
       " 'Until',\n",
       " 'Use',\n",
       " 'Uther',\n",
       " 'Uugh',\n",
       " 'Uuh',\n",
       " 'Very',\n",
       " 'Victory',\n",
       " 'W',\n",
       " 'Waa',\n",
       " 'Wait',\n",
       " 'Walk',\n",
       " 'Wayy',\n",
       " 'We',\n",
       " 'Welcome',\n",
       " 'Well',\n",
       " 'What',\n",
       " 'When',\n",
       " 'Where',\n",
       " 'Which',\n",
       " 'Who',\n",
       " 'Whoa',\n",
       " 'Why',\n",
       " 'Will',\n",
       " 'Winston',\n",
       " 'Winter',\n",
       " 'With',\n",
       " 'Woa',\n",
       " 'Wood',\n",
       " 'Would',\n",
       " 'Y',\n",
       " 'Yapping',\n",
       " 'Yay',\n",
       " 'Yeaaah',\n",
       " 'Yeaah',\n",
       " 'Yeah',\n",
       " 'Yes',\n",
       " 'You',\n",
       " 'Your',\n",
       " 'Yup',\n",
       " 'Zoot']"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(item for item in set(text6) if item.istitle()) # text6 文本中不重复单词首字母大写的词排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "d93bf037",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['29', '61']"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(item for item in set(sent7) if item.isdigit()) # sent7 列表中不重复词为纯数字的词排序"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1beff3f",
   "metadata": {},
   "source": [
    "我们还可以创建更复杂的条件。如果c 是一个条件，那么`not` c 也是一个条件。如果我们有两个条件c1 和c2，那么我们可以使用合取和析取将它们合并形成一个新的条件：c1 `and` c2, c1 `or` c2。\n",
    "\n",
    "注意\n",
    "\n",
    "**轮到你来：** 运行下面的例子，尝试解释每一条指令中所发生的事情。然后，试着自己组合一些条件。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ea6df547",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Stock-index',\n",
       " 'index-arbitrage',\n",
       " 'index-fund',\n",
       " 'index-options',\n",
       " 'index-related',\n",
       " 'stock-index']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(w for w in set(text7) if '-' in w and 'index' in w) # text7 文本中不重复词含 - 和 index 的词排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "bde92eb1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Abelmizraim',\n",
       " 'Allonbachuth',\n",
       " 'Beerlahairoi',\n",
       " 'Canaanitish',\n",
       " 'Chedorlaomer',\n",
       " 'Girgashites',\n",
       " 'Hazarmaveth',\n",
       " 'Hazezontamar',\n",
       " 'Ishmeelites',\n",
       " 'Jegarsahadutha',\n",
       " 'Jehovahjireh',\n",
       " 'Kirjatharba',\n",
       " 'Melchizedek',\n",
       " 'Mesopotamia',\n",
       " 'Peradventure',\n",
       " 'Philistines',\n",
       " 'Zaphnathpaaneah']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(wd for wd in set(text3) if wd.istitle() and len(wd) > 10) # text3 文本中不重复词首字母大写且长度大于10的词排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f49f7629",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[',', '.', '29', '61', 'Nov.', 'Pierre', 'Vinken']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(w for w in set(sent7) if not w.islower()) # sent7 列表中不重复词首字非小写字母的词排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5a6c673c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['ancient',\n",
       " 'ceiling',\n",
       " 'conceit',\n",
       " 'conceited',\n",
       " 'conceive',\n",
       " 'conscience',\n",
       " 'conscientious',\n",
       " 'conscientiously',\n",
       " 'deceitful',\n",
       " 'deceive',\n",
       " 'deceived',\n",
       " 'deceiving',\n",
       " 'deficiencies',\n",
       " 'deficiency',\n",
       " 'deficient',\n",
       " 'delicacies',\n",
       " 'excellencies',\n",
       " 'fancied',\n",
       " 'insufficiency',\n",
       " 'insufficient',\n",
       " 'legacies',\n",
       " 'perceive',\n",
       " 'perceived',\n",
       " 'perceiving',\n",
       " 'prescience',\n",
       " 'prophecies',\n",
       " 'receipt',\n",
       " 'receive',\n",
       " 'received',\n",
       " 'receiving',\n",
       " 'society',\n",
       " 'species',\n",
       " 'sufficient',\n",
       " 'sufficiently',\n",
       " 'undeceive',\n",
       " 'undeceiving']"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(t for t in set(text2) if 'cie' in t or 'cei' in t) # text2 文本中不重复词含cie或cei的词排序"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e6bb740",
   "metadata": {},
   "source": [
    "## 4.2 对每个元素进行操作\n",
    "\n",
    "在[3](http://www.nltk.org/book/ch01.html#sec-computing-with-language-simple-statistics)节中，我们看到计数词汇以外的其他项目的一些例子。让我们仔细看看我们所使用的符号："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "d6dcfae3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1,\n",
       " 4,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 8,\n",
       " 4,\n",
       " 1,\n",
       " 9,\n",
       " 1,\n",
       " 1,\n",
       " 8,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 11,\n",
       " 5,\n",
       " 2,\n",
       " 1,\n",
       " 7,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 10,\n",
       " 2,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 3,\n",
       " 8,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 12,\n",
       " 1,\n",
       " 9,\n",
       " 11,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 7,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 2,\n",
       " 7,\n",
       " 6,\n",
       " 8,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 9,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 3,\n",
       " 6,\n",
       " 7,\n",
       " 3,\n",
       " 1,\n",
       " 7,\n",
       " 9,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 6,\n",
       " 5,\n",
       " 6,\n",
       " 3,\n",
       " 13,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 8,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 6,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 9,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 7,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 10,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 11,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 1,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 2,\n",
       " 10,\n",
       " 1,\n",
       " 1,\n",
       " 10,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 9,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 11,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 8,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 9,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 11,\n",
       " 8,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 4,\n",
       " 8,\n",
       " 3,\n",
       " 6,\n",
       " 1,\n",
       " 6,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 7,\n",
       " 2,\n",
       " 8,\n",
       " 6,\n",
       " 9,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 5,\n",
       " 7,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 10,\n",
       " 1,\n",
       " 6,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 9,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 8,\n",
       " 5,\n",
       " 10,\n",
       " 1,\n",
       " 7,\n",
       " 9,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 8,\n",
       " 1,\n",
       " 3,\n",
       " 9,\n",
       " 6,\n",
       " 8,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 8,\n",
       " 3,\n",
       " 7,\n",
       " 7,\n",
       " 9,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 4,\n",
       " 9,\n",
       " 1,\n",
       " 5,\n",
       " 8,\n",
       " 3,\n",
       " 6,\n",
       " 8,\n",
       " 2,\n",
       " 12,\n",
       " 1,\n",
       " 2,\n",
       " 9,\n",
       " 1,\n",
       " 8,\n",
       " 4,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 13,\n",
       " 4,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 9,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 11,\n",
       " 1,\n",
       " 9,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 11,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 9,\n",
       " 2,\n",
       " 4,\n",
       " 8,\n",
       " 1,\n",
       " 6,\n",
       " 5,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 5,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 6,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 3,\n",
       " 9,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 1,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 3,\n",
       " 5,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 10,\n",
       " 10,\n",
       " 7,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 9,\n",
       " 1,\n",
       " 5,\n",
       " 4,\n",
       " 1,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 7,\n",
       " 5,\n",
       " 3,\n",
       " 3,\n",
       " 9,\n",
       " 3,\n",
       " 2,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 5,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 7,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 6,\n",
       " 3,\n",
       " 8,\n",
       " 3,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 7,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 8,\n",
       " 2,\n",
       " 4,\n",
       " 1,\n",
       " 8,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 4,\n",
       " 6,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 3,\n",
       " 10,\n",
       " 6,\n",
       " 8,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 6,\n",
       " 14,\n",
       " 7,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 7,\n",
       " 5,\n",
       " 6,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 9,\n",
       " 6,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 8,\n",
       " 1,\n",
       " 5,\n",
       " 4,\n",
       " 2,\n",
       " 7,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 2,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 6,\n",
       " 9,\n",
       " 3,\n",
       " 8,\n",
       " 7,\n",
       " 1,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 7,\n",
       " 7,\n",
       " 1,\n",
       " 3,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 3,\n",
       " 6,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 2,\n",
       " 2,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 5,\n",
       " 6,\n",
       " 7,\n",
       " 6,\n",
       " 6,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 4,\n",
       " 3,\n",
       " 13,\n",
       " 4,\n",
       " 4,\n",
       " 5,\n",
       " 7,\n",
       " 2,\n",
       " 3,\n",
       " 1,\n",
       " 3,\n",
       " 9,\n",
       " 2,\n",
       " 3,\n",
       " 10,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 6,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 6,\n",
       " 3,\n",
       " 8,\n",
       " 3,\n",
       " 4,\n",
       " 3,\n",
       " 3,\n",
       " 7,\n",
       " 6,\n",
       " 4,\n",
       " 3,\n",
       " 1,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 6,\n",
       " 3,\n",
       " 11,\n",
       " 6,\n",
       " 7,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 4,\n",
       " 5,\n",
       " 2,\n",
       " 6,\n",
       " 2,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 7,\n",
       " 1,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 8,\n",
       " 3,\n",
       " 2,\n",
       " 9,\n",
       " 3,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 7,\n",
       " 1,\n",
       " 5,\n",
       " 4,\n",
       " 6,\n",
       " 3,\n",
       " 5,\n",
       " 8,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 1,\n",
       " 8,\n",
       " 1,\n",
       " 5,\n",
       " 3,\n",
       " 6,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 9,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 1,\n",
       " 4,\n",
       " 1,\n",
       " 7,\n",
       " 1,\n",
       " 7,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 3,\n",
       " 5,\n",
       " 1,\n",
       " 3,\n",
       " 7,\n",
       " 3,\n",
       " 3,\n",
       " 6,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 2,\n",
       " 5,\n",
       " 1,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 1,\n",
       " 3,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 7,\n",
       " 4,\n",
       " 7,\n",
       " 4,\n",
       " 4,\n",
       " 1,\n",
       " 4,\n",
       " 2,\n",
       " 8,\n",
       " 5,\n",
       " 1,\n",
       " 6,\n",
       " 1,\n",
       " 5,\n",
       " 3,\n",
       " 5,\n",
       " 2,\n",
       " 4,\n",
       " 5,\n",
       " 5,\n",
       " 3,\n",
       " 5,\n",
       " 5,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 2,\n",
       " 7,\n",
       " 4,\n",
       " 2,\n",
       " 3,\n",
       " 4,\n",
       " 1,\n",
       " 3,\n",
       " 3,\n",
       " 4,\n",
       " 6,\n",
       " 4,\n",
       " 7,\n",
       " 2,\n",
       " 3,\n",
       " 3,\n",
       " 7,\n",
       " 1,\n",
       " 2,\n",
       " 5,\n",
       " 4,\n",
       " 4,\n",
       " 5,\n",
       " 1,\n",
       " 5,\n",
       " 1,\n",
       " 4,\n",
       " 5,\n",
       " 5,\n",
       " 4,\n",
       " 1,\n",
       " 2,\n",
       " ...]"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[len(w) for w in text1] # text1 文本中各词长度列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "f890539d",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['[',\n",
       " 'MOBY',\n",
       " 'DICK',\n",
       " 'BY',\n",
       " 'HERMAN',\n",
       " 'MELVILLE',\n",
       " '1851',\n",
       " ']',\n",
       " 'ETYMOLOGY',\n",
       " '.',\n",
       " '(',\n",
       " 'SUPPLIED',\n",
       " 'BY',\n",
       " 'A',\n",
       " 'LATE',\n",
       " 'CONSUMPTIVE',\n",
       " 'USHER',\n",
       " 'TO',\n",
       " 'A',\n",
       " 'GRAMMAR',\n",
       " 'SCHOOL',\n",
       " ')',\n",
       " 'THE',\n",
       " 'PALE',\n",
       " 'USHER',\n",
       " '--',\n",
       " 'THREADBARE',\n",
       " 'IN',\n",
       " 'COAT',\n",
       " ',',\n",
       " 'HEART',\n",
       " ',',\n",
       " 'BODY',\n",
       " ',',\n",
       " 'AND',\n",
       " 'BRAIN',\n",
       " ';',\n",
       " 'I',\n",
       " 'SEE',\n",
       " 'HIM',\n",
       " 'NOW',\n",
       " '.',\n",
       " 'HE',\n",
       " 'WAS',\n",
       " 'EVER',\n",
       " 'DUSTING',\n",
       " 'HIS',\n",
       " 'OLD',\n",
       " 'LEXICONS',\n",
       " 'AND',\n",
       " 'GRAMMARS',\n",
       " ',',\n",
       " 'WITH',\n",
       " 'A',\n",
       " 'QUEER',\n",
       " 'HANDKERCHIEF',\n",
       " ',',\n",
       " 'MOCKINGLY',\n",
       " 'EMBELLISHED',\n",
       " 'WITH',\n",
       " 'ALL',\n",
       " 'THE',\n",
       " 'GAY',\n",
       " 'FLAGS',\n",
       " 'OF',\n",
       " 'ALL',\n",
       " 'THE',\n",
       " 'KNOWN',\n",
       " 'NATIONS',\n",
       " 'OF',\n",
       " 'THE',\n",
       " 'WORLD',\n",
       " '.',\n",
       " 'HE',\n",
       " 'LOVED',\n",
       " 'TO',\n",
       " 'DUST',\n",
       " 'HIS',\n",
       " 'OLD',\n",
       " 'GRAMMARS',\n",
       " ';',\n",
       " 'IT',\n",
       " 'SOMEHOW',\n",
       " 'MILDLY',\n",
       " 'REMINDED',\n",
       " 'HIM',\n",
       " 'OF',\n",
       " 'HIS',\n",
       " 'MORTALITY',\n",
       " '.',\n",
       " '\"',\n",
       " 'WHILE',\n",
       " 'YOU',\n",
       " 'TAKE',\n",
       " 'IN',\n",
       " 'HAND',\n",
       " 'TO',\n",
       " 'SCHOOL',\n",
       " 'OTHERS',\n",
       " ',',\n",
       " 'AND',\n",
       " 'TO',\n",
       " 'TEACH',\n",
       " 'THEM',\n",
       " 'BY',\n",
       " 'WHAT',\n",
       " 'NAME',\n",
       " 'A',\n",
       " 'WHALE',\n",
       " '-',\n",
       " 'FISH',\n",
       " 'IS',\n",
       " 'TO',\n",
       " 'BE',\n",
       " 'CALLED',\n",
       " 'IN',\n",
       " 'OUR',\n",
       " 'TONGUE',\n",
       " 'LEAVING',\n",
       " 'OUT',\n",
       " ',',\n",
       " 'THROUGH',\n",
       " 'IGNORANCE',\n",
       " ',',\n",
       " 'THE',\n",
       " 'LETTER',\n",
       " 'H',\n",
       " ',',\n",
       " 'WHICH',\n",
       " 'ALMOST',\n",
       " 'ALONE',\n",
       " 'MAKETH',\n",
       " 'THE',\n",
       " 'SIGNIFICATION',\n",
       " 'OF',\n",
       " 'THE',\n",
       " 'WORD',\n",
       " ',',\n",
       " 'YOU',\n",
       " 'DELIVER',\n",
       " 'THAT',\n",
       " 'WHICH',\n",
       " 'IS',\n",
       " 'NOT',\n",
       " 'TRUE',\n",
       " '.\"',\n",
       " '--',\n",
       " 'HACKLUYT',\n",
       " '\"',\n",
       " 'WHALE',\n",
       " '.',\n",
       " '...',\n",
       " 'SW',\n",
       " '.',\n",
       " 'AND',\n",
       " 'DAN',\n",
       " '.',\n",
       " 'HVAL',\n",
       " '.',\n",
       " 'THIS',\n",
       " 'ANIMAL',\n",
       " 'IS',\n",
       " 'NAMED',\n",
       " 'FROM',\n",
       " 'ROUNDNESS',\n",
       " 'OR',\n",
       " 'ROLLING',\n",
       " ';',\n",
       " 'FOR',\n",
       " 'IN',\n",
       " 'DAN',\n",
       " '.',\n",
       " 'HVALT',\n",
       " 'IS',\n",
       " 'ARCHED',\n",
       " 'OR',\n",
       " 'VAULTED',\n",
       " '.\"',\n",
       " '--',\n",
       " 'WEBSTER',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'DICTIONARY',\n",
       " '\"',\n",
       " 'WHALE',\n",
       " '.',\n",
       " '...',\n",
       " 'IT',\n",
       " 'IS',\n",
       " 'MORE',\n",
       " 'IMMEDIATELY',\n",
       " 'FROM',\n",
       " 'THE',\n",
       " 'DUT',\n",
       " '.',\n",
       " 'AND',\n",
       " 'GER',\n",
       " '.',\n",
       " 'WALLEN',\n",
       " ';',\n",
       " 'A',\n",
       " '.',\n",
       " 'S',\n",
       " '.',\n",
       " 'WALW',\n",
       " '-',\n",
       " 'IAN',\n",
       " ',',\n",
       " 'TO',\n",
       " 'ROLL',\n",
       " ',',\n",
       " 'TO',\n",
       " 'WALLOW',\n",
       " '.\"',\n",
       " '--',\n",
       " 'RICHARDSON',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'DICTIONARY',\n",
       " 'KETOS',\n",
       " ',',\n",
       " 'GREEK',\n",
       " '.',\n",
       " 'CETUS',\n",
       " ',',\n",
       " 'LATIN',\n",
       " '.',\n",
       " 'WHOEL',\n",
       " ',',\n",
       " 'ANGLO',\n",
       " '-',\n",
       " 'SAXON',\n",
       " '.',\n",
       " 'HVALT',\n",
       " ',',\n",
       " 'DANISH',\n",
       " '.',\n",
       " 'WAL',\n",
       " ',',\n",
       " 'DUTCH',\n",
       " '.',\n",
       " 'HWAL',\n",
       " ',',\n",
       " 'SWEDISH',\n",
       " '.',\n",
       " 'WHALE',\n",
       " ',',\n",
       " 'ICELANDIC',\n",
       " '.',\n",
       " 'WHALE',\n",
       " ',',\n",
       " 'ENGLISH',\n",
       " '.',\n",
       " 'BALEINE',\n",
       " ',',\n",
       " 'FRENCH',\n",
       " '.',\n",
       " 'BALLENA',\n",
       " ',',\n",
       " 'SPANISH',\n",
       " '.',\n",
       " 'PEKEE',\n",
       " '-',\n",
       " 'NUEE',\n",
       " '-',\n",
       " 'NUEE',\n",
       " ',',\n",
       " 'FEGEE',\n",
       " '.',\n",
       " 'PEKEE',\n",
       " '-',\n",
       " 'NUEE',\n",
       " '-',\n",
       " 'NUEE',\n",
       " ',',\n",
       " 'ERROMANGOAN',\n",
       " '.',\n",
       " 'EXTRACTS',\n",
       " '(',\n",
       " 'SUPPLIED',\n",
       " 'BY',\n",
       " 'A',\n",
       " 'SUB',\n",
       " '-',\n",
       " 'SUB',\n",
       " '-',\n",
       " 'LIBRARIAN',\n",
       " ').',\n",
       " 'IT',\n",
       " 'WILL',\n",
       " 'BE',\n",
       " 'SEEN',\n",
       " 'THAT',\n",
       " 'THIS',\n",
       " 'MERE',\n",
       " 'PAINSTAKING',\n",
       " 'BURROWER',\n",
       " 'AND',\n",
       " 'GRUB',\n",
       " '-',\n",
       " 'WORM',\n",
       " 'OF',\n",
       " 'A',\n",
       " 'POOR',\n",
       " 'DEVIL',\n",
       " 'OF',\n",
       " 'A',\n",
       " 'SUB',\n",
       " '-',\n",
       " 'SUB',\n",
       " 'APPEARS',\n",
       " 'TO',\n",
       " 'HAVE',\n",
       " 'GONE',\n",
       " 'THROUGH',\n",
       " 'THE',\n",
       " 'LONG',\n",
       " 'VATICANS',\n",
       " 'AND',\n",
       " 'STREET',\n",
       " '-',\n",
       " 'STALLS',\n",
       " 'OF',\n",
       " 'THE',\n",
       " 'EARTH',\n",
       " ',',\n",
       " 'PICKING',\n",
       " 'UP',\n",
       " 'WHATEVER',\n",
       " 'RANDOM',\n",
       " 'ALLUSIONS',\n",
       " 'TO',\n",
       " 'WHALES',\n",
       " 'HE',\n",
       " 'COULD',\n",
       " 'ANYWAYS',\n",
       " 'FIND',\n",
       " 'IN',\n",
       " 'ANY',\n",
       " 'BOOK',\n",
       " 'WHATSOEVER',\n",
       " ',',\n",
       " 'SACRED',\n",
       " 'OR',\n",
       " 'PROFANE',\n",
       " '.',\n",
       " 'THEREFORE',\n",
       " 'YOU',\n",
       " 'MUST',\n",
       " 'NOT',\n",
       " ',',\n",
       " 'IN',\n",
       " 'EVERY',\n",
       " 'CASE',\n",
       " 'AT',\n",
       " 'LEAST',\n",
       " ',',\n",
       " 'TAKE',\n",
       " 'THE',\n",
       " 'HIGGLEDY',\n",
       " '-',\n",
       " 'PIGGLEDY',\n",
       " 'WHALE',\n",
       " 'STATEMENTS',\n",
       " ',',\n",
       " 'HOWEVER',\n",
       " 'AUTHENTIC',\n",
       " ',',\n",
       " 'IN',\n",
       " 'THESE',\n",
       " 'EXTRACTS',\n",
       " ',',\n",
       " 'FOR',\n",
       " 'VERITABLE',\n",
       " 'GOSPEL',\n",
       " 'CETOLOGY',\n",
       " '.',\n",
       " 'FAR',\n",
       " 'FROM',\n",
       " 'IT',\n",
       " '.',\n",
       " 'AS',\n",
       " 'TOUCHING',\n",
       " 'THE',\n",
       " 'ANCIENT',\n",
       " 'AUTHORS',\n",
       " 'GENERALLY',\n",
       " ',',\n",
       " 'AS',\n",
       " 'WELL',\n",
       " 'AS',\n",
       " 'THE',\n",
       " 'POETS',\n",
       " 'HERE',\n",
       " 'APPEARING',\n",
       " ',',\n",
       " 'THESE',\n",
       " 'EXTRACTS',\n",
       " 'ARE',\n",
       " 'SOLELY',\n",
       " 'VALUABLE',\n",
       " 'OR',\n",
       " 'ENTERTAINING',\n",
       " ',',\n",
       " 'AS',\n",
       " 'AFFORDING',\n",
       " 'A',\n",
       " 'GLANCING',\n",
       " 'BIRD',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'EYE',\n",
       " 'VIEW',\n",
       " 'OF',\n",
       " 'WHAT',\n",
       " 'HAS',\n",
       " 'BEEN',\n",
       " 'PROMISCUOUSLY',\n",
       " 'SAID',\n",
       " ',',\n",
       " 'THOUGHT',\n",
       " ',',\n",
       " 'FANCIED',\n",
       " ',',\n",
       " 'AND',\n",
       " 'SUNG',\n",
       " 'OF',\n",
       " 'LEVIATHAN',\n",
       " ',',\n",
       " 'BY',\n",
       " 'MANY',\n",
       " 'NATIONS',\n",
       " 'AND',\n",
       " 'GENERATIONS',\n",
       " ',',\n",
       " 'INCLUDING',\n",
       " 'OUR',\n",
       " 'OWN',\n",
       " '.',\n",
       " 'SO',\n",
       " 'FARE',\n",
       " 'THEE',\n",
       " 'WELL',\n",
       " ',',\n",
       " 'POOR',\n",
       " 'DEVIL',\n",
       " 'OF',\n",
       " 'A',\n",
       " 'SUB',\n",
       " '-',\n",
       " 'SUB',\n",
       " ',',\n",
       " 'WHOSE',\n",
       " 'COMMENTATOR',\n",
       " 'I',\n",
       " 'AM',\n",
       " '.',\n",
       " 'THOU',\n",
       " 'BELONGEST',\n",
       " 'TO',\n",
       " 'THAT',\n",
       " 'HOPELESS',\n",
       " ',',\n",
       " 'SALLOW',\n",
       " 'TRIBE',\n",
       " 'WHICH',\n",
       " 'NO',\n",
       " 'WINE',\n",
       " 'OF',\n",
       " 'THIS',\n",
       " 'WORLD',\n",
       " 'WILL',\n",
       " 'EVER',\n",
       " 'WARM',\n",
       " ';',\n",
       " 'AND',\n",
       " 'FOR',\n",
       " 'WHOM',\n",
       " 'EVEN',\n",
       " 'PALE',\n",
       " 'SHERRY',\n",
       " 'WOULD',\n",
       " 'BE',\n",
       " 'TOO',\n",
       " 'ROSY',\n",
       " '-',\n",
       " 'STRONG',\n",
       " ';',\n",
       " 'BUT',\n",
       " 'WITH',\n",
       " 'WHOM',\n",
       " 'ONE',\n",
       " 'SOMETIMES',\n",
       " 'LOVES',\n",
       " 'TO',\n",
       " 'SIT',\n",
       " ',',\n",
       " 'AND',\n",
       " 'FEEL',\n",
       " 'POOR',\n",
       " '-',\n",
       " 'DEVILISH',\n",
       " ',',\n",
       " 'TOO',\n",
       " ';',\n",
       " 'AND',\n",
       " 'GROW',\n",
       " 'CONVIVIAL',\n",
       " 'UPON',\n",
       " 'TEARS',\n",
       " ';',\n",
       " 'AND',\n",
       " 'SAY',\n",
       " 'TO',\n",
       " 'THEM',\n",
       " 'BLUNTLY',\n",
       " ',',\n",
       " 'WITH',\n",
       " 'FULL',\n",
       " 'EYES',\n",
       " 'AND',\n",
       " 'EMPTY',\n",
       " 'GLASSES',\n",
       " ',',\n",
       " 'AND',\n",
       " 'IN',\n",
       " 'NOT',\n",
       " 'ALTOGETHER',\n",
       " 'UNPLEASANT',\n",
       " 'SADNESS',\n",
       " '--',\n",
       " 'GIVE',\n",
       " 'IT',\n",
       " 'UP',\n",
       " ',',\n",
       " 'SUB',\n",
       " '-',\n",
       " 'SUBS',\n",
       " '!',\n",
       " 'FOR',\n",
       " 'BY',\n",
       " 'HOW',\n",
       " 'MUCH',\n",
       " 'THE',\n",
       " 'MORE',\n",
       " 'PAINS',\n",
       " 'YE',\n",
       " 'TAKE',\n",
       " 'TO',\n",
       " 'PLEASE',\n",
       " 'THE',\n",
       " 'WORLD',\n",
       " ',',\n",
       " 'BY',\n",
       " 'SO',\n",
       " 'MUCH',\n",
       " 'THE',\n",
       " 'MORE',\n",
       " 'SHALL',\n",
       " 'YE',\n",
       " 'FOR',\n",
       " 'EVER',\n",
       " 'GO',\n",
       " 'THANKLESS',\n",
       " '!',\n",
       " 'WOULD',\n",
       " 'THAT',\n",
       " 'I',\n",
       " 'COULD',\n",
       " 'CLEAR',\n",
       " 'OUT',\n",
       " 'HAMPTON',\n",
       " 'COURT',\n",
       " 'AND',\n",
       " 'THE',\n",
       " 'TUILERIES',\n",
       " 'FOR',\n",
       " 'YE',\n",
       " '!',\n",
       " 'BUT',\n",
       " 'GULP',\n",
       " 'DOWN',\n",
       " 'YOUR',\n",
       " 'TEARS',\n",
       " 'AND',\n",
       " 'HIE',\n",
       " 'ALOFT',\n",
       " 'TO',\n",
       " 'THE',\n",
       " 'ROYAL',\n",
       " '-',\n",
       " 'MAST',\n",
       " 'WITH',\n",
       " 'YOUR',\n",
       " 'HEARTS',\n",
       " ';',\n",
       " 'FOR',\n",
       " 'YOUR',\n",
       " 'FRIENDS',\n",
       " 'WHO',\n",
       " 'HAVE',\n",
       " 'GONE',\n",
       " 'BEFORE',\n",
       " 'ARE',\n",
       " 'CLEARING',\n",
       " 'OUT',\n",
       " 'THE',\n",
       " 'SEVEN',\n",
       " '-',\n",
       " 'STORIED',\n",
       " 'HEAVENS',\n",
       " ',',\n",
       " 'AND',\n",
       " 'MAKING',\n",
       " 'REFUGEES',\n",
       " 'OF',\n",
       " 'LONG',\n",
       " '-',\n",
       " 'PAMPERED',\n",
       " 'GABRIEL',\n",
       " ',',\n",
       " 'MICHAEL',\n",
       " ',',\n",
       " 'AND',\n",
       " 'RAPHAEL',\n",
       " ',',\n",
       " 'AGAINST',\n",
       " 'YOUR',\n",
       " 'COMING',\n",
       " '.',\n",
       " 'HERE',\n",
       " 'YE',\n",
       " 'STRIKE',\n",
       " 'BUT',\n",
       " 'SPLINTERED',\n",
       " 'HEARTS',\n",
       " 'TOGETHER',\n",
       " '--',\n",
       " 'THERE',\n",
       " ',',\n",
       " 'YE',\n",
       " 'SHALL',\n",
       " 'STRIKE',\n",
       " 'UNSPLINTERABLE',\n",
       " 'GLASSES',\n",
       " '!',\n",
       " 'EXTRACTS',\n",
       " '.',\n",
       " '\"',\n",
       " 'AND',\n",
       " 'GOD',\n",
       " 'CREATED',\n",
       " 'GREAT',\n",
       " 'WHALES',\n",
       " '.\"',\n",
       " '--',\n",
       " 'GENESIS',\n",
       " '.',\n",
       " '\"',\n",
       " 'LEVIATHAN',\n",
       " 'MAKETH',\n",
       " 'A',\n",
       " 'PATH',\n",
       " 'TO',\n",
       " 'SHINE',\n",
       " 'AFTER',\n",
       " 'HIM',\n",
       " ';',\n",
       " 'ONE',\n",
       " 'WOULD',\n",
       " 'THINK',\n",
       " 'THE',\n",
       " 'DEEP',\n",
       " 'TO',\n",
       " 'BE',\n",
       " 'HOARY',\n",
       " '.\"',\n",
       " '--',\n",
       " 'JOB',\n",
       " '.',\n",
       " '\"',\n",
       " 'NOW',\n",
       " 'THE',\n",
       " 'LORD',\n",
       " 'HAD',\n",
       " 'PREPARED',\n",
       " 'A',\n",
       " 'GREAT',\n",
       " 'FISH',\n",
       " 'TO',\n",
       " 'SWALLOW',\n",
       " 'UP',\n",
       " 'JONAH',\n",
       " '.\"',\n",
       " '--',\n",
       " 'JONAH',\n",
       " '.',\n",
       " '\"',\n",
       " 'THERE',\n",
       " 'GO',\n",
       " 'THE',\n",
       " 'SHIPS',\n",
       " ';',\n",
       " 'THERE',\n",
       " 'IS',\n",
       " 'THAT',\n",
       " 'LEVIATHAN',\n",
       " 'WHOM',\n",
       " 'THOU',\n",
       " 'HAST',\n",
       " 'MADE',\n",
       " 'TO',\n",
       " 'PLAY',\n",
       " 'THEREIN',\n",
       " '.\"',\n",
       " '--',\n",
       " 'PSALMS',\n",
       " '.',\n",
       " '\"',\n",
       " 'IN',\n",
       " 'THAT',\n",
       " 'DAY',\n",
       " ',',\n",
       " 'THE',\n",
       " 'LORD',\n",
       " 'WITH',\n",
       " 'HIS',\n",
       " 'SORE',\n",
       " ',',\n",
       " 'AND',\n",
       " 'GREAT',\n",
       " ',',\n",
       " 'AND',\n",
       " 'STRONG',\n",
       " 'SWORD',\n",
       " ',',\n",
       " 'SHALL',\n",
       " 'PUNISH',\n",
       " 'LEVIATHAN',\n",
       " 'THE',\n",
       " 'PIERCING',\n",
       " 'SERPENT',\n",
       " ',',\n",
       " 'EVEN',\n",
       " 'LEVIATHAN',\n",
       " 'THAT',\n",
       " 'CROOKED',\n",
       " 'SERPENT',\n",
       " ';',\n",
       " 'AND',\n",
       " 'HE',\n",
       " 'SHALL',\n",
       " 'SLAY',\n",
       " 'THE',\n",
       " 'DRAGON',\n",
       " 'THAT',\n",
       " 'IS',\n",
       " 'IN',\n",
       " 'THE',\n",
       " 'SEA',\n",
       " '.\"',\n",
       " '--',\n",
       " 'ISAIAH',\n",
       " '\"',\n",
       " 'AND',\n",
       " 'WHAT',\n",
       " 'THING',\n",
       " 'SOEVER',\n",
       " 'BESIDES',\n",
       " 'COMETH',\n",
       " 'WITHIN',\n",
       " 'THE',\n",
       " 'CHAOS',\n",
       " 'OF',\n",
       " 'THIS',\n",
       " 'MONSTER',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'MOUTH',\n",
       " ',',\n",
       " 'BE',\n",
       " 'IT',\n",
       " 'BEAST',\n",
       " ',',\n",
       " 'BOAT',\n",
       " ',',\n",
       " 'OR',\n",
       " 'STONE',\n",
       " ',',\n",
       " 'DOWN',\n",
       " 'IT',\n",
       " 'GOES',\n",
       " 'ALL',\n",
       " 'INCONTINENTLY',\n",
       " 'THAT',\n",
       " 'FOUL',\n",
       " 'GREAT',\n",
       " 'SWALLOW',\n",
       " 'OF',\n",
       " 'HIS',\n",
       " ',',\n",
       " 'AND',\n",
       " 'PERISHETH',\n",
       " 'IN',\n",
       " 'THE',\n",
       " 'BOTTOMLESS',\n",
       " 'GULF',\n",
       " 'OF',\n",
       " 'HIS',\n",
       " 'PAUNCH',\n",
       " '.\"',\n",
       " '--',\n",
       " 'HOLLAND',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'PLUTARCH',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'MORALS',\n",
       " '.',\n",
       " '\"',\n",
       " 'THE',\n",
       " 'INDIAN',\n",
       " 'SEA',\n",
       " 'BREEDETH',\n",
       " 'THE',\n",
       " 'MOST',\n",
       " 'AND',\n",
       " 'THE',\n",
       " 'BIGGEST',\n",
       " 'FISHES',\n",
       " 'THAT',\n",
       " 'ARE',\n",
       " ':',\n",
       " 'AMONG',\n",
       " 'WHICH',\n",
       " 'THE',\n",
       " 'WHALES',\n",
       " 'AND',\n",
       " 'WHIRLPOOLES',\n",
       " 'CALLED',\n",
       " 'BALAENE',\n",
       " ',',\n",
       " 'TAKE',\n",
       " 'UP',\n",
       " 'AS',\n",
       " 'MUCH',\n",
       " 'IN',\n",
       " 'LENGTH',\n",
       " 'AS',\n",
       " 'FOUR',\n",
       " 'ACRES',\n",
       " 'OR',\n",
       " 'ARPENS',\n",
       " 'OF',\n",
       " 'LAND',\n",
       " '.\"',\n",
       " '--',\n",
       " 'HOLLAND',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'PLINY',\n",
       " '.',\n",
       " '\"',\n",
       " 'SCARCELY',\n",
       " 'HAD',\n",
       " 'WE',\n",
       " 'PROCEEDED',\n",
       " 'TWO',\n",
       " 'DAYS',\n",
       " 'ON',\n",
       " 'THE',\n",
       " 'SEA',\n",
       " ',',\n",
       " 'WHEN',\n",
       " 'ABOUT',\n",
       " 'SUNRISE',\n",
       " 'A',\n",
       " 'GREAT',\n",
       " 'MANY',\n",
       " 'WHALES',\n",
       " 'AND',\n",
       " 'OTHER',\n",
       " 'MONSTERS',\n",
       " 'OF',\n",
       " 'THE',\n",
       " 'SEA',\n",
       " ',',\n",
       " 'APPEARED',\n",
       " '.',\n",
       " 'AMONG',\n",
       " 'THE',\n",
       " 'FORMER',\n",
       " ',',\n",
       " 'ONE',\n",
       " 'WAS',\n",
       " 'OF',\n",
       " 'A',\n",
       " 'MOST',\n",
       " 'MONSTROUS',\n",
       " 'SIZE',\n",
       " '.',\n",
       " '...',\n",
       " 'THIS',\n",
       " 'CAME',\n",
       " 'TOWARDS',\n",
       " 'US',\n",
       " ',',\n",
       " 'OPEN',\n",
       " '-',\n",
       " 'MOUTHED',\n",
       " ',',\n",
       " 'RAISING',\n",
       " 'THE',\n",
       " 'WAVES',\n",
       " 'ON',\n",
       " 'ALL',\n",
       " 'SIDES',\n",
       " ',',\n",
       " 'AND',\n",
       " 'BEATING',\n",
       " 'THE',\n",
       " 'SEA',\n",
       " 'BEFORE',\n",
       " 'HIM',\n",
       " 'INTO',\n",
       " 'A',\n",
       " 'FOAM',\n",
       " '.\"',\n",
       " '--',\n",
       " 'TOOKE',\n",
       " \"'\",\n",
       " 'S',\n",
       " 'LUCIAN',\n",
       " '.',\n",
       " '\"',\n",
       " 'THE',\n",
       " 'TRUE',\n",
       " 'HISTORY',\n",
       " '.\"',\n",
       " '\"',\n",
       " 'HE',\n",
       " 'VISITED',\n",
       " 'THIS',\n",
       " 'COUNTRY',\n",
       " 'ALSO',\n",
       " 'WITH',\n",
       " 'A',\n",
       " 'VIEW',\n",
       " 'OF',\n",
       " 'CATCHING',\n",
       " 'HORSE',\n",
       " '-',\n",
       " 'WHALES',\n",
       " ',',\n",
       " 'WHICH',\n",
       " 'HAD',\n",
       " 'BONES',\n",
       " 'OF',\n",
       " 'VERY',\n",
       " 'GREAT',\n",
       " 'VALUE',\n",
       " 'FOR',\n",
       " 'THEIR',\n",
       " 'TEETH',\n",
       " ',',\n",
       " 'OF',\n",
       " 'WHICH',\n",
       " 'HE',\n",
       " 'BROUGHT',\n",
       " 'SOME',\n",
       " 'TO',\n",
       " 'THE',\n",
       " 'KING',\n",
       " '.',\n",
       " '...',\n",
       " 'THE',\n",
       " 'BEST',\n",
       " 'WHALES',\n",
       " 'WERE',\n",
       " 'CATCHED',\n",
       " 'IN',\n",
       " 'HIS',\n",
       " 'OWN',\n",
       " 'COUNTRY',\n",
       " ',',\n",
       " 'OF',\n",
       " 'WHICH',\n",
       " 'SOME',\n",
       " 'WERE',\n",
       " 'FORTY',\n",
       " '-',\n",
       " 'EIGHT',\n",
       " ',',\n",
       " 'SOME',\n",
       " 'FIFTY',\n",
       " 'YARDS',\n",
       " 'LONG',\n",
       " '.',\n",
       " 'HE',\n",
       " ...]"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[w.upper() for w in text1] # text1 文本中单词转大写列表"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f35a9c1",
   "metadata": {},
   "source": [
    "这些表达式形式为`[f(w) for ...]` 或`[w.f() for ...]`，其中`f` 是一个函数，用来计算词长，或把字母转换为大写。现阶段你还不需要理解两种表示方法：`f(w)` 和`w.f()`。而只需学习对列表上的所有元素执行相同的操作的这种Python 习惯用法。在前面的例子中，遍历`text1`中的每一个词，一个接一个的赋值给变量`w` 并在变量上执行指定的操作。\n",
    "\n",
    "注意\n",
    "\n",
    "上面描述的表示法被称为“列表推导”。这是我们的第一个Python 习惯用法的例子，一中固定的表示法，我们习惯使用的方法，省去了每次分析的烦恼。掌握这些习惯用法是成为一流Python 程序员的一个重要组成部分。\n",
    "\n",
    "让我们回到计数词汇的问题，这里使用相同的习惯用法："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "0722efdc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "260819"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(text1) # text1 文本词数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "a489e82a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "19317"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(set(text1)) # text1 文本不重复词数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "b8482f9e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "17231"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(set(word.lower() for word in text1)) # text1 文本全转小写字母后不重复词数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b216b03a",
   "metadata": {},
   "source": [
    "由于我们不重复计算像This和this这样仅仅大小写不同的词，就已经从词汇表计数中抹去了2,000 个！还可以更进一步，通过过滤掉所有非字母元素，从词汇表中消除数字和标点符号："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "673dadfa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "16948"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(set(word.lower() for word in text1 if word.isalpha())) # text1 文本过滤非字母元素并全转小写字母后不重复词数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "571f488c",
   "metadata": {},
   "source": [
    "这个例子稍微有些复杂：将所有纯字母组成的词小写。也许只计数小写的词会更简单一些，但这却是一个错误的答案（为什么？）。\n",
    "\n",
    "如果你对列表推导不那么充满信心，请不要担心，因为在下面的章节中你会看到更多的例子及解释。\n",
    "\n",
    "## 4.3 嵌套代码块\n",
    "\n",
    "大多数编程语言允许我们在条件表达式或者`if`语句条件满足时执行代码块。我们在`[w for w in sent7 if len(w) < 4]` 这样的代码中已经看到条件测试的例子。在下面的程序中，我们创建一个叫`word`的变量包含字符串值`'cat'`。`if` 语句中检查`len(word) < 5` 是否为真。它确实为真，所以`if` 语句的代码块被调用，`print` 语句被执行，向用户显示一条消息。别忘了要缩进，在`print`语句前输入四个空格。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "3a9df61f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "word length is less than 5\n"
     ]
    }
   ],
   "source": [
    "word = 'cat'\n",
    "if len(word) < 5:\n",
    "     print('word length is less than 5')  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "853cbfd7",
   "metadata": {},
   "source": [
    "使用Python 解释器时，我们必须添加一个额外的空白行 [# 1](http://www.nltk.org/book/ch01.html#blank-line)，这样它才能检测到嵌套块结束。\n",
    "\n",
    "注意\n",
    "\n",
    "如果你正在使用Python 2.6 或2.7，为了识别上面的`print`函数，需要包括以下行︰"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1859d04f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from __future__ import print_function"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c1d1cbe",
   "metadata": {},
   "source": [
    "如果我们改变测试条件为`len(word) >= 5`来检查`word`的长度是否大于等于`5`，那么测试将不再为真。此时，`if`语句后面的代码段将不会被执行，没有消息显示给用户："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "c8bbcebc",
   "metadata": {},
   "outputs": [],
   "source": [
    "if len(word) >= 5:\n",
    "   print('word length is greater than or equal to 5')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cfa9d03d",
   "metadata": {},
   "source": [
    "`if`语句被称为一种控制结构，因为它控制缩进块中的代码将是否运行。另一种控制结构是`for`循环。尝试下面的代码，请记住包含冒号和四个空格："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "611fcc54",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Call\n",
      "me\n",
      "Ishmael\n",
      ".\n"
     ]
    }
   ],
   "source": [
    "for word in ['Call', 'me', 'Ishmael', '.']:\n",
    "     print(word)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b298a6c",
   "metadata": {},
   "source": [
    "这叫做循环，因为Python 以循环的方式执行里面的代码。它以`word = 'Call'`赋值开始，使用变量`word` 命名列表的第一个元素。然后，显示`word`的值给用户。接下来它回到`for`语句，执行`word = 'me'`赋值，然后显示这个新值给用户，以此类推。它以这种方式不断运行，直到列表中所有项都被处理完。\n",
    "\n",
    "## 4.4 条件循环\n",
    "\n",
    "现在，我们可以将`if`语句和`for`语句结合。循环链表中每一项，只输出结尾字母是*l*的词。我们将为变量挑选另一个名字以表明Python 并不在意变量名的意义。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "36000ac3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Call\n",
      "Ishmael\n"
     ]
    }
   ],
   "source": [
    "sent1 = ['Call', 'me', 'Ishmael', '.']\n",
    "for xyzzy in sent1:\n",
    "    if xyzzy.endswith('l'):\n",
    "        print(xyzzy)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e017febd",
   "metadata": {},
   "source": [
    "你会发现在`if` 和`for`语句所在行末尾——缩进开始之前——有一个冒号。事实上，所有的Python 控制结构都以冒号结尾。冒号表示当前语句与后面的缩进块有关联。\n",
    "\n",
    "我们也可以指定当`if`语句的条件不满足时采取的行动。在这里，我们看到`elif`(else if)语句和`else`语句。请注意，这些在缩进代码前也有冒号。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "id": "6e4ab5cd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Call is a titlecase word\n",
      "me is a lowercase word\n",
      "Ishmael is a titlecase word\n",
      ". is punctuation\n"
     ]
    }
   ],
   "source": [
    "for token in sent1:\n",
    "    if token.islower():\n",
    "        print(token, 'is a lowercase word')\n",
    "    elif token.istitle():\n",
    "        print(token, 'is a titlecase word')\n",
    "    else:\n",
    "        print(token, 'is punctuation')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72dcc97e",
   "metadata": {},
   "source": [
    "正如你看到的，即便只有这么一点儿Python 知识，你就已经可以开始构建多行的Python 程序。分块开发程序，在整合它们之前测试每一块代码是否达到你的预期是很重要的。这也是Python 交互式解释器的价值所在，也是为什么你必须适应它的原因。\n",
    "\n",
    "最后，让我们把一直在探索的习惯用法组合起来。首先，我们创建一个包含cie 或cei的词的列表，然后循环输出其中的每一项。请注意print语句中给出的额外信息︰end=' '。它告诉Python 在每个单词后面打印一个空格（而不是默认的换行）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "141da032",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ancient ceiling conceit conceited conceive conscience conscientious conscientiously deceitful deceive deceived deceiving deficiencies deficiency deficient delicacies excellencies fancied insufficiency insufficient legacies perceive perceived perceiving prescience prophecies receipt receive received receiving society species sufficient sufficiently undeceive undeceiving "
     ]
    }
   ],
   "source": [
    "tricky = sorted(w for w in set(text2) if 'cie' in w or 'cei' in w)\n",
    "for word in tricky:\n",
    "    print(word, end=' ')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "efd728c6",
   "metadata": {},
   "source": [
    "## 5 自动理解自然语言\n",
    "\n",
    "我们一直在各种文本和Python 编程语言的帮助自下而上的探索语言。然而，我们也对通过构建有用的语言技术，开拓我们的语言和计算知识感兴趣。现在，我们将借此机会从代码的细节中退出来，描绘一下自然语言处理的全景图。\n",
    "\n",
    "纯粹应用层面，我们大家都需要帮助才能找到隐含在网络上的文本中的浩瀚的信息。搜索引擎在网络的发展和普及中发挥了关键作用，但也有一些缺点。它需要技能、知识和一点运气才能找到这样一些问题的答案：我用有限的预算能参观费城和匹兹堡的哪些景点？专家们怎么评论数码单反相机？过去的一周里可信的评论员都对钢材市场做了哪些预测？让计算机来自动回答这些问题，涉及包括信息提取、推理与总结在内的广泛的语言处理任务，将需要在一个更大规模更稳健的层面实施，这超出了我们当前的能力。\n",
    "\n",
    "哲学层面，构建智能机器是人工智能长久以来的挑战，语言理解是智能行为的重要组成部分。这一目标多年来一直被看作是太困难了。然而，随着NLP 技术日趋成熟，分析非结构化文本的方法越来越健壮，应用越来越广泛，对自然语言理解的期望变成一个合理的目标再次浮现。\n",
    "\n",
    "在本节中，我们将描述一些语言理解技术，给你一种有趣的挑战正在等着你的感觉。\n",
    "\n",
    "## 5.1 词意消歧\n",
    "\n",
    "在词意消歧中，我们要算出特定上下文中的词被赋予的是哪个意思。思考存在歧义的词serve 和dish：\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "c46d8f4b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['!',\n",
       " '!\"',\n",
       " '!\"--',\n",
       " \"!'\",\n",
       " '!\\'\"',\n",
       " '!)',\n",
       " '!)\"',\n",
       " '!*',\n",
       " '!--',\n",
       " '!--\"',\n",
       " \"!--'\",\n",
       " '\"',\n",
       " '\"\\'',\n",
       " '\"--',\n",
       " '\"...',\n",
       " '\";',\n",
       " '$',\n",
       " '&',\n",
       " \"'\",\n",
       " \"',\",\n",
       " \"',--\",\n",
       " \"'-\",\n",
       " \"'--\",\n",
       " \"';\",\n",
       " '(',\n",
       " ')',\n",
       " '),',\n",
       " ')--',\n",
       " ').',\n",
       " ').--',\n",
       " '):',\n",
       " ');',\n",
       " ');--',\n",
       " '*',\n",
       " ',',\n",
       " ',\"',\n",
       " ',\"--',\n",
       " \",'\",\n",
       " \",'--\",\n",
       " ',)',\n",
       " ',*',\n",
       " ',--',\n",
       " ',--\"',\n",
       " \",--'\",\n",
       " '-',\n",
       " '--',\n",
       " '--\"',\n",
       " \"--'\",\n",
       " '--\\'\"',\n",
       " '--(',\n",
       " '---\"',\n",
       " '---,',\n",
       " '.',\n",
       " '.\"',\n",
       " '.\"*',\n",
       " '.\"--',\n",
       " \".'\",\n",
       " '.\\'\"',\n",
       " '.)',\n",
       " '.*',\n",
       " '.*--',\n",
       " '.,',\n",
       " '.--',\n",
       " '.--\"',\n",
       " '...',\n",
       " '....',\n",
       " '.]',\n",
       " '000',\n",
       " '1',\n",
       " '10',\n",
       " '100',\n",
       " '101',\n",
       " '102',\n",
       " '103',\n",
       " '104',\n",
       " '105',\n",
       " '106',\n",
       " '107',\n",
       " '108',\n",
       " '109',\n",
       " '11',\n",
       " '110',\n",
       " '111',\n",
       " '112',\n",
       " '113',\n",
       " '114',\n",
       " '115',\n",
       " '116',\n",
       " '117',\n",
       " '118',\n",
       " '119',\n",
       " '12',\n",
       " '120',\n",
       " '121',\n",
       " '122',\n",
       " '123',\n",
       " '124',\n",
       " '125',\n",
       " '126',\n",
       " '127',\n",
       " '128',\n",
       " '129',\n",
       " '13',\n",
       " '130',\n",
       " '131',\n",
       " '132',\n",
       " '133',\n",
       " '134',\n",
       " '135',\n",
       " '14',\n",
       " '144',\n",
       " '1492',\n",
       " '15',\n",
       " '150',\n",
       " '15th',\n",
       " '16',\n",
       " '1652',\n",
       " '1668',\n",
       " '1671',\n",
       " '1690',\n",
       " '1695',\n",
       " '16th',\n",
       " '17',\n",
       " '1726',\n",
       " '1729',\n",
       " '1750',\n",
       " '1772',\n",
       " '1775',\n",
       " '1776',\n",
       " '1778',\n",
       " '1779',\n",
       " '1788',\n",
       " '1791',\n",
       " '1793',\n",
       " '18',\n",
       " '180',\n",
       " '1807',\n",
       " '1819',\n",
       " '1820',\n",
       " '1821',\n",
       " '1825',\n",
       " '1828',\n",
       " '1833',\n",
       " '1836',\n",
       " '1839',\n",
       " '1840',\n",
       " '1842',\n",
       " '1846',\n",
       " '1850',\n",
       " '1851',\n",
       " '19',\n",
       " '1st',\n",
       " '2',\n",
       " '20',\n",
       " '2000',\n",
       " '200th',\n",
       " '21',\n",
       " '21st',\n",
       " '22',\n",
       " '23',\n",
       " '24',\n",
       " '25',\n",
       " '26',\n",
       " '27',\n",
       " '275th',\n",
       " '28',\n",
       " '29',\n",
       " '2nd',\n",
       " '3',\n",
       " '30',\n",
       " '31',\n",
       " '31st',\n",
       " '32',\n",
       " '33',\n",
       " '34',\n",
       " '35',\n",
       " '36',\n",
       " '37',\n",
       " '38',\n",
       " '39',\n",
       " '3d',\n",
       " '4',\n",
       " '40',\n",
       " '400',\n",
       " '41',\n",
       " '42',\n",
       " '43',\n",
       " '44',\n",
       " '440',\n",
       " '45',\n",
       " '46',\n",
       " '47',\n",
       " '48',\n",
       " '49',\n",
       " '4th',\n",
       " '5',\n",
       " '50',\n",
       " '500',\n",
       " '51',\n",
       " '52',\n",
       " '53',\n",
       " '54',\n",
       " '55',\n",
       " '550',\n",
       " '56',\n",
       " '57',\n",
       " '58',\n",
       " '59',\n",
       " '5th',\n",
       " '6',\n",
       " '60',\n",
       " '61',\n",
       " '62',\n",
       " '63',\n",
       " '64',\n",
       " '65',\n",
       " '66',\n",
       " '67',\n",
       " '68',\n",
       " '69',\n",
       " '7',\n",
       " '70',\n",
       " '71',\n",
       " '72',\n",
       " '73',\n",
       " '74',\n",
       " '75',\n",
       " '76',\n",
       " '77',\n",
       " '78',\n",
       " '79',\n",
       " '8',\n",
       " '80',\n",
       " '800',\n",
       " '81',\n",
       " '82',\n",
       " '83',\n",
       " '84',\n",
       " '85',\n",
       " '86',\n",
       " '87',\n",
       " '88',\n",
       " '89',\n",
       " '890',\n",
       " '9',\n",
       " '90',\n",
       " '91',\n",
       " '92',\n",
       " '93',\n",
       " '94',\n",
       " '95',\n",
       " '96',\n",
       " '97',\n",
       " '98',\n",
       " '99',\n",
       " ':',\n",
       " ':\"-',\n",
       " ':--',\n",
       " ':--\"',\n",
       " \":--'\",\n",
       " ';',\n",
       " ';\"',\n",
       " ';\"--',\n",
       " ';\"--(',\n",
       " \";'\",\n",
       " ';*',\n",
       " ';--',\n",
       " ';--\"',\n",
       " \";--'\",\n",
       " '?',\n",
       " '?\"',\n",
       " '?\"--',\n",
       " \"?'\",\n",
       " \"?'--'\",\n",
       " '?--',\n",
       " '?--\"',\n",
       " \"?--'\",\n",
       " '[',\n",
       " ']',\n",
       " '_____________',\n",
       " 'a',\n",
       " 'aback',\n",
       " 'abaft',\n",
       " 'abandon',\n",
       " 'abandoned',\n",
       " 'abandonedly',\n",
       " 'abandonment',\n",
       " 'abased',\n",
       " 'abasement',\n",
       " 'abashed',\n",
       " 'abate',\n",
       " 'abated',\n",
       " 'abatement',\n",
       " 'abating',\n",
       " 'abbreviate',\n",
       " 'abbreviation',\n",
       " 'abeam',\n",
       " 'abed',\n",
       " 'abednego',\n",
       " 'abel',\n",
       " 'abhorred',\n",
       " 'abhorrence',\n",
       " 'abhorrent',\n",
       " 'abhorring',\n",
       " 'abide',\n",
       " 'abided',\n",
       " 'abiding',\n",
       " 'ability',\n",
       " 'abjectly',\n",
       " 'abjectus',\n",
       " 'able',\n",
       " 'ablutions',\n",
       " 'aboard',\n",
       " 'abode',\n",
       " 'abominable',\n",
       " 'abominate',\n",
       " 'abominated',\n",
       " 'abomination',\n",
       " 'aboriginal',\n",
       " 'aboriginally',\n",
       " 'aboriginalness',\n",
       " 'abortion',\n",
       " 'abortions',\n",
       " 'abound',\n",
       " 'abounded',\n",
       " 'abounding',\n",
       " 'aboundingly',\n",
       " 'about',\n",
       " 'above',\n",
       " 'abraham',\n",
       " 'abreast',\n",
       " 'abridged',\n",
       " 'abroad',\n",
       " 'abruptly',\n",
       " 'absence',\n",
       " 'absent',\n",
       " 'absolute',\n",
       " 'absolutely',\n",
       " 'absorbed',\n",
       " 'absorbing',\n",
       " 'absorbingly',\n",
       " 'abstained',\n",
       " 'abstemious',\n",
       " 'abstinence',\n",
       " 'abstract',\n",
       " 'abstracted',\n",
       " 'abstraction',\n",
       " 'absurd',\n",
       " 'absurdly',\n",
       " 'abundance',\n",
       " 'abundant',\n",
       " 'abundantly',\n",
       " 'academy',\n",
       " 'accelerate',\n",
       " 'accelerated',\n",
       " 'accelerating',\n",
       " 'accept',\n",
       " 'accessible',\n",
       " 'accessory',\n",
       " 'accident',\n",
       " 'accidental',\n",
       " 'accidentally',\n",
       " 'accidents',\n",
       " 'accommodate',\n",
       " 'accommodated',\n",
       " 'accommodation',\n",
       " 'accompanied',\n",
       " 'accompanies',\n",
       " 'accompaniments',\n",
       " 'accompany',\n",
       " 'accompanying',\n",
       " 'accomplish',\n",
       " 'accomplished',\n",
       " 'accomplishing',\n",
       " 'accomplishment',\n",
       " 'accordance',\n",
       " 'according',\n",
       " 'accordingly',\n",
       " 'accosted',\n",
       " 'account',\n",
       " 'accountable',\n",
       " 'accountants',\n",
       " 'accounted',\n",
       " 'accounting',\n",
       " 'accounts',\n",
       " 'accumulate',\n",
       " 'accumulated',\n",
       " 'accumulating',\n",
       " 'accuracy',\n",
       " 'accurate',\n",
       " 'accurately',\n",
       " 'accursed',\n",
       " 'accustomed',\n",
       " 'acerbities',\n",
       " 'ache',\n",
       " 'ached',\n",
       " 'achieve',\n",
       " 'achieved',\n",
       " 'achilles',\n",
       " 'acknowledges',\n",
       " 'acknowledging',\n",
       " 'acquaintance',\n",
       " 'acquaintances',\n",
       " 'acquainted',\n",
       " 'acquiesce',\n",
       " 'acquiesced',\n",
       " 'acquiescence',\n",
       " 'acquired',\n",
       " 'acre',\n",
       " 'acres',\n",
       " 'acridness',\n",
       " 'across',\n",
       " 'act',\n",
       " 'acted',\n",
       " 'actest',\n",
       " 'action',\n",
       " 'actions',\n",
       " 'actium',\n",
       " 'active',\n",
       " 'actively',\n",
       " 'activity',\n",
       " 'acts',\n",
       " 'actual',\n",
       " 'actually',\n",
       " 'actuated',\n",
       " 'acushnet',\n",
       " 'acute',\n",
       " 'acuteness',\n",
       " 'adam',\n",
       " 'adamite',\n",
       " 'adapted',\n",
       " 'add',\n",
       " 'added',\n",
       " 'adding',\n",
       " 'addition',\n",
       " 'additional',\n",
       " 'address',\n",
       " 'addressed',\n",
       " 'addressing',\n",
       " 'adds',\n",
       " 'adequate',\n",
       " 'adequately',\n",
       " 'adhering',\n",
       " 'adhesiveness',\n",
       " 'adieu',\n",
       " 'adieux',\n",
       " 'adios',\n",
       " 'adjacent',\n",
       " 'adjoining',\n",
       " 'adjust',\n",
       " 'adjusting',\n",
       " 'admeasurement',\n",
       " 'admeasurements',\n",
       " 'administered',\n",
       " 'administering',\n",
       " 'admirable',\n",
       " 'admirably',\n",
       " 'admiral',\n",
       " 'admirals',\n",
       " 'admire',\n",
       " 'admirer',\n",
       " 'admirers',\n",
       " 'admit',\n",
       " 'admits',\n",
       " 'admitted',\n",
       " 'admitting',\n",
       " 'admonish',\n",
       " 'admonished',\n",
       " 'admonishing',\n",
       " 'admonitions',\n",
       " 'admonitory',\n",
       " 'ado',\n",
       " 'adolescence',\n",
       " 'adopt',\n",
       " 'adopted',\n",
       " 'adopting',\n",
       " 'adoption',\n",
       " 'adoration',\n",
       " 'adoring',\n",
       " 'adorned',\n",
       " 'adorning',\n",
       " 'adornment',\n",
       " 'adown',\n",
       " 'adrift',\n",
       " 'adroit',\n",
       " 'adroitly',\n",
       " 'adroop',\n",
       " 'adult',\n",
       " 'adulterer',\n",
       " 'advance',\n",
       " 'advanced',\n",
       " 'advancement',\n",
       " 'advances',\n",
       " 'advancing',\n",
       " 'advantage',\n",
       " 'advantages',\n",
       " 'advent',\n",
       " 'adventure',\n",
       " 'adventures',\n",
       " 'adventurous',\n",
       " 'adventurously',\n",
       " 'adverse',\n",
       " 'advert',\n",
       " 'advertised',\n",
       " 'advice',\n",
       " 'advised',\n",
       " 'advocate',\n",
       " 'aerated',\n",
       " 'aesthetically',\n",
       " 'aesthetics',\n",
       " 'afar',\n",
       " 'affair',\n",
       " 'affairs',\n",
       " 'affect',\n",
       " 'affected',\n",
       " 'affecting',\n",
       " 'affection',\n",
       " 'affectionate',\n",
       " 'affectionately',\n",
       " 'affghanistan',\n",
       " 'affidavit',\n",
       " 'affinities',\n",
       " 'affirm',\n",
       " 'affirmative',\n",
       " 'affirms',\n",
       " 'affixed',\n",
       " 'afflicted',\n",
       " 'afflictions',\n",
       " 'affluent',\n",
       " 'afford',\n",
       " 'afforded',\n",
       " 'affording',\n",
       " 'affords',\n",
       " 'affright',\n",
       " 'affrighted',\n",
       " 'affrights',\n",
       " 'affronted',\n",
       " 'afire',\n",
       " 'afloat',\n",
       " 'afoam',\n",
       " 'afore',\n",
       " 'aforesaid',\n",
       " 'aforethought',\n",
       " 'afoul',\n",
       " 'afraid',\n",
       " 'afresh',\n",
       " 'afric',\n",
       " 'africa',\n",
       " 'african',\n",
       " 'africans',\n",
       " 'aft',\n",
       " 'after',\n",
       " 'afternoon',\n",
       " 'afternoons',\n",
       " 'afterwards',\n",
       " 'again',\n",
       " 'againe',\n",
       " 'against',\n",
       " 'agassiz',\n",
       " 'age',\n",
       " 'aged',\n",
       " 'agencies',\n",
       " 'agency',\n",
       " 'agent',\n",
       " 'agents',\n",
       " 'ages',\n",
       " 'aggravate',\n",
       " 'aggregate',\n",
       " 'aggregated',\n",
       " 'aggregation',\n",
       " 'aggregations',\n",
       " 'aggrieved',\n",
       " 'aghast',\n",
       " 'agile',\n",
       " 'agitated',\n",
       " 'aglow',\n",
       " 'ago',\n",
       " 'agonies',\n",
       " 'agonized',\n",
       " 'agonizing',\n",
       " 'agonizingly',\n",
       " 'agony',\n",
       " 'agrarian',\n",
       " 'agree',\n",
       " 'agreeable',\n",
       " 'agreed',\n",
       " 'agrees',\n",
       " 'aground',\n",
       " 'ague',\n",
       " 'ah',\n",
       " 'ahab',\n",
       " 'ahabs',\n",
       " 'ahasuerus',\n",
       " 'ahaz',\n",
       " 'ahead',\n",
       " 'ahoy',\n",
       " 'aid',\n",
       " 'aides',\n",
       " 'ails',\n",
       " 'aim',\n",
       " 'aimed',\n",
       " 'aimlessly',\n",
       " 'ain',\n",
       " 'aint',\n",
       " 'air',\n",
       " 'airley',\n",
       " 'airth',\n",
       " 'aisle',\n",
       " 'ajar',\n",
       " 'akin',\n",
       " 'alabama',\n",
       " 'aladdin',\n",
       " 'alarm',\n",
       " 'alarmed',\n",
       " 'alarms',\n",
       " 'alas',\n",
       " 'alb',\n",
       " 'albatross',\n",
       " 'albatrosses',\n",
       " 'albemarle',\n",
       " 'albert',\n",
       " 'albicore',\n",
       " 'albino',\n",
       " 'alcoves',\n",
       " 'aldermen',\n",
       " 'aldrovandi',\n",
       " 'aldrovandus',\n",
       " 'ale',\n",
       " 'aleak',\n",
       " 'alert',\n",
       " 'alewives',\n",
       " 'alexander',\n",
       " 'alexanders',\n",
       " 'alfred',\n",
       " 'algerine',\n",
       " 'algiers',\n",
       " 'alien',\n",
       " 'aliens',\n",
       " 'alights',\n",
       " 'alike',\n",
       " 'aliment',\n",
       " 'alive',\n",
       " 'all',\n",
       " 'allay',\n",
       " 'allaying',\n",
       " 'alleged',\n",
       " 'alleghanian',\n",
       " 'alleghanies',\n",
       " 'allegiance',\n",
       " 'allegorical',\n",
       " 'allegory',\n",
       " 'alley',\n",
       " 'alleys',\n",
       " 'allies',\n",
       " 'allotted',\n",
       " 'allow',\n",
       " 'allowance',\n",
       " 'allowances',\n",
       " 'allowed',\n",
       " 'allowing',\n",
       " 'allude',\n",
       " 'alluded',\n",
       " 'alluding',\n",
       " 'allured',\n",
       " 'allurements',\n",
       " 'allures',\n",
       " 'alluring',\n",
       " 'alluringly',\n",
       " 'allurings',\n",
       " 'allusion',\n",
       " 'allusions',\n",
       " 'almanac',\n",
       " 'almanack',\n",
       " 'almighty',\n",
       " 'almost',\n",
       " 'alms',\n",
       " 'aloft',\n",
       " 'alone',\n",
       " 'along',\n",
       " 'alongside',\n",
       " 'aloof',\n",
       " 'aloud',\n",
       " 'alow',\n",
       " 'alpacas',\n",
       " 'alpine',\n",
       " 'alps',\n",
       " 'already',\n",
       " 'also',\n",
       " 'altar',\n",
       " 'alter',\n",
       " 'altered',\n",
       " 'altering',\n",
       " 'alternate',\n",
       " 'alternately',\n",
       " 'alternating',\n",
       " 'although',\n",
       " 'altitude',\n",
       " 'altitudes',\n",
       " 'altogether',\n",
       " 'always',\n",
       " 'am',\n",
       " 'amain',\n",
       " 'amaze',\n",
       " 'amazement',\n",
       " 'amazing',\n",
       " 'amazingly',\n",
       " 'amber',\n",
       " 'ambergriese',\n",
       " 'ambergris',\n",
       " 'ambiguous',\n",
       " 'ambition',\n",
       " 'ambitious',\n",
       " 'amelia',\n",
       " 'amen',\n",
       " 'amend',\n",
       " 'america',\n",
       " 'american',\n",
       " 'americans',\n",
       " 'americas',\n",
       " 'amid',\n",
       " 'amidst',\n",
       " 'amittai',\n",
       " 'among',\n",
       " 'amongst',\n",
       " 'amorous',\n",
       " 'amount',\n",
       " 'amounted',\n",
       " 'amounts',\n",
       " 'amours',\n",
       " 'amphibious',\n",
       " 'amphitheatrical',\n",
       " 'ample',\n",
       " 'amplified',\n",
       " 'amplify',\n",
       " 'amputate',\n",
       " 'amputated',\n",
       " 'amputating',\n",
       " 'amputation',\n",
       " 'amputations',\n",
       " 'amsterdam',\n",
       " 'amuck',\n",
       " 'amusing',\n",
       " 'an',\n",
       " 'anacharsis',\n",
       " 'anaconda',\n",
       " 'anacondas',\n",
       " 'anak',\n",
       " 'analogical',\n",
       " 'analogies',\n",
       " 'analogous',\n",
       " 'analogy',\n",
       " 'analyse',\n",
       " 'analysed',\n",
       " 'analysis',\n",
       " 'analytic',\n",
       " 'anathemas',\n",
       " 'anatomical',\n",
       " 'anatomist',\n",
       " 'anatomy',\n",
       " 'ancestors',\n",
       " 'ancestress',\n",
       " 'ancestry',\n",
       " 'anchor',\n",
       " 'anchored',\n",
       " 'anchors',\n",
       " 'ancient',\n",
       " 'ancientest',\n",
       " 'and',\n",
       " 'andes',\n",
       " 'andirons',\n",
       " 'andrew',\n",
       " 'andromeda',\n",
       " 'anew',\n",
       " 'angel',\n",
       " 'angelo',\n",
       " 'angels',\n",
       " 'anger',\n",
       " 'angle',\n",
       " 'angles',\n",
       " 'anglo',\n",
       " 'angrily',\n",
       " 'angry',\n",
       " 'anguish',\n",
       " 'angular',\n",
       " 'angularly',\n",
       " 'animal',\n",
       " 'animals',\n",
       " 'animate',\n",
       " 'animated',\n",
       " 'animating',\n",
       " 'animation',\n",
       " 'animosity',\n",
       " 'ankers',\n",
       " 'ankles',\n",
       " 'annals',\n",
       " 'annawon',\n",
       " 'anne',\n",
       " 'annihilated',\n",
       " 'annihilating',\n",
       " 'annihilation',\n",
       " 'anno',\n",
       " 'announced',\n",
       " 'announcement',\n",
       " 'announces',\n",
       " 'announcing',\n",
       " 'annual',\n",
       " 'annually',\n",
       " 'annuitants',\n",
       " 'annus',\n",
       " 'anoint',\n",
       " 'anointed',\n",
       " 'anointing',\n",
       " 'anoints',\n",
       " 'anomalous',\n",
       " 'anomalously',\n",
       " 'anomaly',\n",
       " 'anon',\n",
       " 'anonymous',\n",
       " 'another',\n",
       " 'answer',\n",
       " 'answered',\n",
       " 'answers',\n",
       " 'ant',\n",
       " 'antagonistic',\n",
       " 'antarctic',\n",
       " 'antecedent',\n",
       " 'antediluvian',\n",
       " 'antelope',\n",
       " 'antemosaic',\n",
       " 'anti',\n",
       " 'antichronical',\n",
       " 'anticipated',\n",
       " 'anticipatingly',\n",
       " 'anticipation',\n",
       " 'anticipative',\n",
       " 'antics',\n",
       " 'antidote',\n",
       " 'antilles',\n",
       " 'antiochus',\n",
       " 'antique',\n",
       " 'antiquities',\n",
       " 'antiquity',\n",
       " 'antlered',\n",
       " 'antlers',\n",
       " 'antony',\n",
       " 'ants',\n",
       " 'antwerp',\n",
       " 'anus',\n",
       " 'anvil',\n",
       " 'anxieties',\n",
       " 'anxiety',\n",
       " 'anxious',\n",
       " 'any',\n",
       " 'anybody',\n",
       " 'anyhow',\n",
       " 'anyone',\n",
       " 'anything',\n",
       " 'anyway',\n",
       " 'anyways',\n",
       " 'anywhere',\n",
       " 'aorta',\n",
       " 'apart',\n",
       " 'apartment',\n",
       " 'ape',\n",
       " 'apeak',\n",
       " 'apertures',\n",
       " 'apex',\n",
       " 'apollo',\n",
       " 'apology',\n",
       " 'apoplectic',\n",
       " 'apoplexy',\n",
       " 'apostolic',\n",
       " 'apothecary',\n",
       " 'apotheosis',\n",
       " 'appal',\n",
       " 'appalled',\n",
       " 'appalling',\n",
       " 'appallingly',\n",
       " 'appals',\n",
       " 'apparatus',\n",
       " 'apparel',\n",
       " 'apparelled',\n",
       " 'apparent',\n",
       " 'apparently',\n",
       " 'apparition',\n",
       " 'appeal',\n",
       " 'appeals',\n",
       " 'appear',\n",
       " 'appearance',\n",
       " 'appearances',\n",
       " 'appeared',\n",
       " 'appearing',\n",
       " 'appears',\n",
       " 'appellation',\n",
       " 'appellations',\n",
       " 'appellative',\n",
       " 'append',\n",
       " 'appendage',\n",
       " 'appetite',\n",
       " 'appetites',\n",
       " 'apple',\n",
       " 'appliance',\n",
       " 'applicable',\n",
       " 'application',\n",
       " 'applied',\n",
       " 'applies',\n",
       " 'apply',\n",
       " 'applying',\n",
       " 'appoint',\n",
       " 'appointed',\n",
       " 'appointments',\n",
       " 'apportioned',\n",
       " 'appreciative',\n",
       " 'apprehension',\n",
       " 'apprehensions',\n",
       " 'apprehensiveness',\n",
       " 'apprise',\n",
       " 'apprised',\n",
       " 'approach',\n",
       " 'approached',\n",
       " 'approaches',\n",
       " 'approaching',\n",
       " 'appropriate',\n",
       " 'appropriated',\n",
       " 'approval',\n",
       " 'approve',\n",
       " 'approved',\n",
       " 'approving',\n",
       " 'approvingly',\n",
       " 'approximate',\n",
       " 'apricot',\n",
       " 'april',\n",
       " 'apron',\n",
       " 'apt',\n",
       " 'aptitude',\n",
       " 'aptitudes',\n",
       " 'aquarius',\n",
       " 'arbitrary',\n",
       " 'arboring',\n",
       " 'arbours',\n",
       " 'arc',\n",
       " 'arch',\n",
       " 'archaeological',\n",
       " 'archaeologists',\n",
       " 'archangel',\n",
       " 'archangelic',\n",
       " 'archangelical',\n",
       " 'archangels',\n",
       " 'archbishop',\n",
       " 'archbishopric',\n",
       " 'arched',\n",
       " 'archer',\n",
       " 'arches',\n",
       " 'archiepiscopacy',\n",
       " 'arching',\n",
       " 'archipelagoes',\n",
       " 'architect',\n",
       " 'architects',\n",
       " 'architecture',\n",
       " 'archy',\n",
       " 'arctic',\n",
       " 'ardour',\n",
       " 'are',\n",
       " 'area',\n",
       " 'arethusa',\n",
       " 'argo',\n",
       " 'argosy',\n",
       " 'argue',\n",
       " 'argued',\n",
       " 'arguing',\n",
       " 'argument',\n",
       " 'arguments',\n",
       " 'arid',\n",
       " 'aries',\n",
       " 'aright',\n",
       " 'arion',\n",
       " 'arise',\n",
       " 'arisen',\n",
       " 'arises',\n",
       " 'arising',\n",
       " 'aristotle',\n",
       " 'arithmetic',\n",
       " 'ark',\n",
       " 'arkansas',\n",
       " 'arkite',\n",
       " 'arm',\n",
       " 'armada',\n",
       " 'armed',\n",
       " 'armies',\n",
       " 'armor',\n",
       " 'arms',\n",
       " 'army',\n",
       " 'arnold',\n",
       " 'aroma',\n",
       " 'aromas',\n",
       " 'aromatic',\n",
       " 'aroostook',\n",
       " 'arose',\n",
       " 'around',\n",
       " 'arpens',\n",
       " ...]"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(set(w.lower() for w in text1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "4dbef262",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['!',\n",
       " '!\"',\n",
       " '!\"--',\n",
       " \"!'\",\n",
       " '!\\'\"',\n",
       " '!)',\n",
       " '!)\"',\n",
       " '!*',\n",
       " '!--',\n",
       " '!--\"',\n",
       " \"!--'\",\n",
       " '\"',\n",
       " '\"\\'',\n",
       " '\"--',\n",
       " '\"...',\n",
       " '\";',\n",
       " '$',\n",
       " '&',\n",
       " \"'\",\n",
       " \"',\",\n",
       " \"',--\",\n",
       " \"'-\",\n",
       " \"'--\",\n",
       " \"';\",\n",
       " '(',\n",
       " ')',\n",
       " '),',\n",
       " ')--',\n",
       " ').',\n",
       " ').--',\n",
       " '):',\n",
       " ');',\n",
       " ');--',\n",
       " '*',\n",
       " ',',\n",
       " ',\"',\n",
       " ',\"--',\n",
       " \",'\",\n",
       " \",'--\",\n",
       " ',)',\n",
       " ',*',\n",
       " ',--',\n",
       " ',--\"',\n",
       " \",--'\",\n",
       " '-',\n",
       " '--',\n",
       " '--\"',\n",
       " \"--'\",\n",
       " '--\\'\"',\n",
       " '--(',\n",
       " '---\"',\n",
       " '---,',\n",
       " '.',\n",
       " '.\"',\n",
       " '.\"*',\n",
       " '.\"--',\n",
       " \".'\",\n",
       " '.\\'\"',\n",
       " '.)',\n",
       " '.*',\n",
       " '.*--',\n",
       " '.,',\n",
       " '.--',\n",
       " '.--\"',\n",
       " '...',\n",
       " '....',\n",
       " '.]',\n",
       " '000',\n",
       " '1',\n",
       " '10',\n",
       " '100',\n",
       " '101',\n",
       " '102',\n",
       " '103',\n",
       " '104',\n",
       " '105',\n",
       " '106',\n",
       " '107',\n",
       " '108',\n",
       " '109',\n",
       " '11',\n",
       " '110',\n",
       " '111',\n",
       " '112',\n",
       " '113',\n",
       " '114',\n",
       " '115',\n",
       " '116',\n",
       " '117',\n",
       " '118',\n",
       " '119',\n",
       " '12',\n",
       " '120',\n",
       " '121',\n",
       " '122',\n",
       " '123',\n",
       " '124',\n",
       " '125',\n",
       " '126',\n",
       " '127',\n",
       " '128',\n",
       " '129',\n",
       " '13',\n",
       " '130',\n",
       " '131',\n",
       " '132',\n",
       " '133',\n",
       " '134',\n",
       " '135',\n",
       " '14',\n",
       " '144',\n",
       " '1492',\n",
       " '15',\n",
       " '150',\n",
       " '15th',\n",
       " '16',\n",
       " '1652',\n",
       " '1668',\n",
       " '1671',\n",
       " '1690',\n",
       " '1695',\n",
       " '16th',\n",
       " '17',\n",
       " '1726',\n",
       " '1729',\n",
       " '1750',\n",
       " '1772',\n",
       " '1775',\n",
       " '1776',\n",
       " '1778',\n",
       " '1779',\n",
       " '1788',\n",
       " '1791',\n",
       " '1793',\n",
       " '18',\n",
       " '180',\n",
       " '1807',\n",
       " '1819',\n",
       " '1820',\n",
       " '1821',\n",
       " '1825',\n",
       " '1828',\n",
       " '1833',\n",
       " '1836',\n",
       " '1839',\n",
       " '1840',\n",
       " '1842',\n",
       " '1846',\n",
       " '1850',\n",
       " '1851',\n",
       " '19',\n",
       " '1st',\n",
       " '1st',\n",
       " '2',\n",
       " '20',\n",
       " '2000',\n",
       " '200th',\n",
       " '21',\n",
       " '21st',\n",
       " '22',\n",
       " '23',\n",
       " '24',\n",
       " '25',\n",
       " '26',\n",
       " '27',\n",
       " '275th',\n",
       " '28',\n",
       " '29',\n",
       " '2nd',\n",
       " '3',\n",
       " '30',\n",
       " '31',\n",
       " '31st',\n",
       " '32',\n",
       " '33',\n",
       " '34',\n",
       " '35',\n",
       " '36',\n",
       " '37',\n",
       " '38',\n",
       " '39',\n",
       " '3d',\n",
       " '3d',\n",
       " '4',\n",
       " '40',\n",
       " '400',\n",
       " '41',\n",
       " '42',\n",
       " '43',\n",
       " '44',\n",
       " '440',\n",
       " '45',\n",
       " '46',\n",
       " '47',\n",
       " '48',\n",
       " '49',\n",
       " '4th',\n",
       " '5',\n",
       " '50',\n",
       " '500',\n",
       " '51',\n",
       " '52',\n",
       " '53',\n",
       " '54',\n",
       " '55',\n",
       " '550',\n",
       " '56',\n",
       " '57',\n",
       " '58',\n",
       " '59',\n",
       " '5th',\n",
       " '6',\n",
       " '60',\n",
       " '61',\n",
       " '62',\n",
       " '63',\n",
       " '64',\n",
       " '65',\n",
       " '66',\n",
       " '67',\n",
       " '68',\n",
       " '69',\n",
       " '7',\n",
       " '70',\n",
       " '71',\n",
       " '72',\n",
       " '73',\n",
       " '74',\n",
       " '75',\n",
       " '76',\n",
       " '77',\n",
       " '78',\n",
       " '79',\n",
       " '8',\n",
       " '80',\n",
       " '800',\n",
       " '81',\n",
       " '82',\n",
       " '83',\n",
       " '84',\n",
       " '85',\n",
       " '86',\n",
       " '87',\n",
       " '88',\n",
       " '89',\n",
       " '890',\n",
       " '9',\n",
       " '90',\n",
       " '91',\n",
       " '92',\n",
       " '93',\n",
       " '94',\n",
       " '95',\n",
       " '96',\n",
       " '97',\n",
       " '98',\n",
       " '99',\n",
       " ':',\n",
       " ':\"-',\n",
       " ':--',\n",
       " ':--\"',\n",
       " \":--'\",\n",
       " ';',\n",
       " ';\"',\n",
       " ';\"--',\n",
       " ';\"--(',\n",
       " \";'\",\n",
       " ';*',\n",
       " ';--',\n",
       " ';--\"',\n",
       " \";--'\",\n",
       " '?',\n",
       " '?\"',\n",
       " '?\"--',\n",
       " \"?'\",\n",
       " \"?'--'\",\n",
       " '?--',\n",
       " '?--\"',\n",
       " \"?--'\",\n",
       " '[',\n",
       " ']',\n",
       " '_____________',\n",
       " 'a',\n",
       " 'a',\n",
       " 'aback',\n",
       " 'abaft',\n",
       " 'abandon',\n",
       " 'abandoned',\n",
       " 'abandonedly',\n",
       " 'abandonment',\n",
       " 'abased',\n",
       " 'abasement',\n",
       " 'abashed',\n",
       " 'abashed',\n",
       " 'abate',\n",
       " 'abated',\n",
       " 'abatement',\n",
       " 'abating',\n",
       " 'abbreviate',\n",
       " 'abbreviation',\n",
       " 'abeam',\n",
       " 'abed',\n",
       " 'abednego',\n",
       " 'abel',\n",
       " 'abhorred',\n",
       " 'abhorrence',\n",
       " 'abhorrent',\n",
       " 'abhorring',\n",
       " 'abide',\n",
       " 'abided',\n",
       " 'abiding',\n",
       " 'ability',\n",
       " 'abjectly',\n",
       " 'abjectus',\n",
       " 'able',\n",
       " 'ablutions',\n",
       " 'aboard',\n",
       " 'aboard',\n",
       " 'abode',\n",
       " 'abominable',\n",
       " 'abominable',\n",
       " 'abominate',\n",
       " 'abominated',\n",
       " 'abomination',\n",
       " 'aboriginal',\n",
       " 'aboriginally',\n",
       " 'aboriginalness',\n",
       " 'abortion',\n",
       " 'abortions',\n",
       " 'abound',\n",
       " 'abounded',\n",
       " 'abounding',\n",
       " 'aboundingly',\n",
       " 'about',\n",
       " 'about',\n",
       " 'about',\n",
       " 'above',\n",
       " 'above',\n",
       " 'abraham',\n",
       " 'abreast',\n",
       " 'abridged',\n",
       " 'abroad',\n",
       " 'abruptly',\n",
       " 'absence',\n",
       " 'absent',\n",
       " 'absolute',\n",
       " 'absolutely',\n",
       " 'absorbed',\n",
       " 'absorbing',\n",
       " 'absorbingly',\n",
       " 'abstained',\n",
       " 'abstemious',\n",
       " 'abstinence',\n",
       " 'abstract',\n",
       " 'abstracted',\n",
       " 'abstraction',\n",
       " 'absurd',\n",
       " 'absurdly',\n",
       " 'abundance',\n",
       " 'abundant',\n",
       " 'abundantly',\n",
       " 'academy',\n",
       " 'accelerate',\n",
       " 'accelerated',\n",
       " 'accelerating',\n",
       " 'accept',\n",
       " 'accessible',\n",
       " 'accessory',\n",
       " 'accessory',\n",
       " 'accident',\n",
       " 'accidental',\n",
       " 'accidentally',\n",
       " 'accidents',\n",
       " 'accommodate',\n",
       " 'accommodated',\n",
       " 'accommodation',\n",
       " 'accompanied',\n",
       " 'accompanies',\n",
       " 'accompaniments',\n",
       " 'accompany',\n",
       " 'accompanying',\n",
       " 'accomplish',\n",
       " 'accomplished',\n",
       " 'accomplishing',\n",
       " 'accomplishment',\n",
       " 'accordance',\n",
       " 'according',\n",
       " 'according',\n",
       " 'accordingly',\n",
       " 'accordingly',\n",
       " 'accosted',\n",
       " 'account',\n",
       " 'account',\n",
       " 'accountable',\n",
       " 'accountants',\n",
       " 'accounted',\n",
       " 'accounting',\n",
       " 'accounts',\n",
       " 'accumulate',\n",
       " 'accumulated',\n",
       " 'accumulating',\n",
       " 'accuracy',\n",
       " 'accurate',\n",
       " 'accurately',\n",
       " 'accursed',\n",
       " 'accursed',\n",
       " 'accustomed',\n",
       " 'acerbities',\n",
       " 'ache',\n",
       " 'ached',\n",
       " 'achieve',\n",
       " 'achieved',\n",
       " 'achilles',\n",
       " 'acknowledges',\n",
       " 'acknowledging',\n",
       " 'acquaintance',\n",
       " 'acquaintances',\n",
       " 'acquainted',\n",
       " 'acquiesce',\n",
       " 'acquiesced',\n",
       " 'acquiescence',\n",
       " 'acquired',\n",
       " 'acre',\n",
       " 'acres',\n",
       " 'acridness',\n",
       " 'across',\n",
       " 'act',\n",
       " 'acted',\n",
       " 'actest',\n",
       " 'action',\n",
       " 'actions',\n",
       " 'actium',\n",
       " 'active',\n",
       " 'actively',\n",
       " 'activity',\n",
       " 'acts',\n",
       " 'actual',\n",
       " 'actually',\n",
       " 'actuated',\n",
       " 'acushnet',\n",
       " 'acute',\n",
       " 'acuteness',\n",
       " 'adam',\n",
       " 'adamite',\n",
       " 'adapted',\n",
       " 'add',\n",
       " 'added',\n",
       " 'adding',\n",
       " 'addition',\n",
       " 'additional',\n",
       " 'additional',\n",
       " 'address',\n",
       " 'addressed',\n",
       " 'addressing',\n",
       " 'adds',\n",
       " 'adequate',\n",
       " 'adequately',\n",
       " 'adhering',\n",
       " 'adhesiveness',\n",
       " 'adieu',\n",
       " 'adieu',\n",
       " 'adieux',\n",
       " 'adios',\n",
       " 'adjacent',\n",
       " 'adjoining',\n",
       " 'adjust',\n",
       " 'adjusting',\n",
       " 'admeasurement',\n",
       " 'admeasurements',\n",
       " 'administered',\n",
       " 'administering',\n",
       " 'admirable',\n",
       " 'admirably',\n",
       " 'admiral',\n",
       " 'admiral',\n",
       " 'admirals',\n",
       " 'admirals',\n",
       " 'admire',\n",
       " 'admirer',\n",
       " 'admirers',\n",
       " 'admit',\n",
       " 'admits',\n",
       " 'admitted',\n",
       " 'admitting',\n",
       " 'admonish',\n",
       " 'admonished',\n",
       " 'admonishing',\n",
       " 'admonitions',\n",
       " 'admonitory',\n",
       " 'ado',\n",
       " 'adolescence',\n",
       " 'adopt',\n",
       " 'adopted',\n",
       " 'adopting',\n",
       " 'adoption',\n",
       " 'adoration',\n",
       " 'adoring',\n",
       " 'adorned',\n",
       " 'adorning',\n",
       " 'adornment',\n",
       " 'adown',\n",
       " 'adrift',\n",
       " 'adroit',\n",
       " 'adroitly',\n",
       " 'adroop',\n",
       " 'adult',\n",
       " 'adulterer',\n",
       " 'advance',\n",
       " 'advance',\n",
       " 'advanced',\n",
       " 'advancement',\n",
       " 'advances',\n",
       " 'advancing',\n",
       " 'advancing',\n",
       " 'advantage',\n",
       " 'advantages',\n",
       " 'advent',\n",
       " 'adventure',\n",
       " 'adventures',\n",
       " 'adventures',\n",
       " 'adventures',\n",
       " 'adventurous',\n",
       " 'adventurously',\n",
       " 'adverse',\n",
       " 'advert',\n",
       " 'advertised',\n",
       " 'advice',\n",
       " 'advised',\n",
       " 'advocate',\n",
       " 'advocate',\n",
       " 'aerated',\n",
       " 'aesthetically',\n",
       " 'aesthetics',\n",
       " 'afar',\n",
       " 'affair',\n",
       " 'affairs',\n",
       " 'affect',\n",
       " 'affected',\n",
       " 'affected',\n",
       " 'affecting',\n",
       " 'affection',\n",
       " 'affectionate',\n",
       " 'affectionately',\n",
       " 'affghanistan',\n",
       " 'affidavit',\n",
       " 'affidavit',\n",
       " 'affinities',\n",
       " 'affirm',\n",
       " 'affirmative',\n",
       " 'affirms',\n",
       " 'affixed',\n",
       " 'afflicted',\n",
       " 'afflictions',\n",
       " 'affluent',\n",
       " 'afford',\n",
       " 'afforded',\n",
       " 'affording',\n",
       " 'affords',\n",
       " 'affright',\n",
       " 'affrighted',\n",
       " 'affrighted',\n",
       " 'affrights',\n",
       " 'affronted',\n",
       " 'afire',\n",
       " 'afloat',\n",
       " 'afoam',\n",
       " 'afore',\n",
       " 'aforesaid',\n",
       " 'aforethought',\n",
       " 'afoul',\n",
       " 'afraid',\n",
       " 'afresh',\n",
       " 'afric',\n",
       " 'africa',\n",
       " 'africa',\n",
       " 'african',\n",
       " 'africans',\n",
       " 'aft',\n",
       " 'aft',\n",
       " 'after',\n",
       " 'after',\n",
       " 'after',\n",
       " 'afternoon',\n",
       " 'afternoons',\n",
       " 'afterwards',\n",
       " 'afterwards',\n",
       " 'again',\n",
       " 'again',\n",
       " 'againe',\n",
       " 'against',\n",
       " 'against',\n",
       " 'against',\n",
       " 'agassiz',\n",
       " 'age',\n",
       " 'aged',\n",
       " 'agencies',\n",
       " 'agency',\n",
       " 'agent',\n",
       " 'agents',\n",
       " 'ages',\n",
       " 'ages',\n",
       " 'aggravate',\n",
       " 'aggregate',\n",
       " 'aggregated',\n",
       " 'aggregation',\n",
       " 'aggregations',\n",
       " 'aggrieved',\n",
       " 'aghast',\n",
       " 'agile',\n",
       " 'agitated',\n",
       " 'aglow',\n",
       " 'ago',\n",
       " 'agonies',\n",
       " 'agonized',\n",
       " 'agonizing',\n",
       " 'agonizingly',\n",
       " 'agony',\n",
       " 'agrarian',\n",
       " 'agree',\n",
       " 'agreeable',\n",
       " 'agreed',\n",
       " 'agrees',\n",
       " 'aground',\n",
       " 'ague',\n",
       " 'ah',\n",
       " 'ah',\n",
       " 'ahab',\n",
       " 'ahab',\n",
       " 'ahabs',\n",
       " 'ahasuerus',\n",
       " 'ahaz',\n",
       " 'ahead',\n",
       " 'ahoy',\n",
       " 'ahoy',\n",
       " 'aid',\n",
       " 'aides',\n",
       " 'ails',\n",
       " 'aim',\n",
       " 'aimed',\n",
       " 'aimlessly',\n",
       " 'ain',\n",
       " 'ain',\n",
       " 'aint',\n",
       " 'air',\n",
       " 'air',\n",
       " 'airley',\n",
       " 'airth',\n",
       " 'aisle',\n",
       " 'ajar',\n",
       " 'akin',\n",
       " 'akin',\n",
       " 'alabama',\n",
       " 'aladdin',\n",
       " 'alarm',\n",
       " 'alarmed',\n",
       " 'alarmed',\n",
       " 'alarms',\n",
       " 'alas',\n",
       " 'alas',\n",
       " 'alb',\n",
       " 'albatross',\n",
       " 'albatross',\n",
       " 'albatrosses',\n",
       " 'albemarle',\n",
       " 'albert',\n",
       " 'albicore',\n",
       " 'albino',\n",
       " 'alcoves',\n",
       " 'aldermen',\n",
       " 'aldrovandi',\n",
       " 'aldrovandus',\n",
       " 'ale',\n",
       " 'aleak',\n",
       " 'alert',\n",
       " 'alewives',\n",
       " 'alexander',\n",
       " 'alexanders',\n",
       " 'alfred',\n",
       " 'alfred',\n",
       " 'algerine',\n",
       " 'algerine',\n",
       " 'algiers',\n",
       " 'alien',\n",
       " 'aliens',\n",
       " 'alights',\n",
       " 'alike',\n",
       " 'alike',\n",
       " 'aliment',\n",
       " 'alive',\n",
       " 'alive',\n",
       " 'alive',\n",
       " 'all',\n",
       " 'all',\n",
       " 'all',\n",
       " 'allay',\n",
       " 'allaying',\n",
       " 'alleged',\n",
       " 'alleghanian',\n",
       " 'alleghanies',\n",
       " 'allegiance',\n",
       " 'allegorical',\n",
       " 'allegory',\n",
       " 'alley',\n",
       " 'alleys',\n",
       " 'allies',\n",
       " 'allotted',\n",
       " 'allow',\n",
       " 'allowance',\n",
       " 'allowances',\n",
       " 'allowed',\n",
       " 'allowing',\n",
       " 'allude',\n",
       " 'alluded',\n",
       " 'alluding',\n",
       " 'allured',\n",
       " 'allurements',\n",
       " 'allures',\n",
       " 'alluring',\n",
       " 'alluringly',\n",
       " 'allurings',\n",
       " 'allusion',\n",
       " 'allusions',\n",
       " 'almanac',\n",
       " 'almanack',\n",
       " 'almighty',\n",
       " 'almighty',\n",
       " 'almost',\n",
       " 'almost',\n",
       " 'alms',\n",
       " 'aloft',\n",
       " 'aloft',\n",
       " 'alone',\n",
       " 'alone',\n",
       " 'alone',\n",
       " 'along',\n",
       " 'alongside',\n",
       " 'aloof',\n",
       " 'aloud',\n",
       " 'alow',\n",
       " 'alpacas',\n",
       " 'alpine',\n",
       " 'alps',\n",
       " 'already',\n",
       " 'already',\n",
       " 'also',\n",
       " 'also',\n",
       " 'altar',\n",
       " 'alter',\n",
       " 'altered',\n",
       " 'altering',\n",
       " 'alternate',\n",
       " 'alternately',\n",
       " 'alternating',\n",
       " 'although',\n",
       " 'altitude',\n",
       " 'altitudes',\n",
       " 'altogether',\n",
       " 'always',\n",
       " 'am',\n",
       " 'am',\n",
       " 'am',\n",
       " 'amain',\n",
       " 'amaze',\n",
       " 'amazement',\n",
       " 'amazing',\n",
       " 'amazingly',\n",
       " 'amber',\n",
       " 'ambergriese',\n",
       " 'ambergris',\n",
       " 'ambergris',\n",
       " 'ambiguous',\n",
       " 'ambition',\n",
       " 'ambitious',\n",
       " 'amelia',\n",
       " 'amen',\n",
       " 'amend',\n",
       " 'america',\n",
       " 'america',\n",
       " 'american',\n",
       " 'americans',\n",
       " 'americas',\n",
       " 'amid',\n",
       " 'amidst',\n",
       " 'amittai',\n",
       " 'among',\n",
       " 'among',\n",
       " 'among',\n",
       " 'amongst',\n",
       " 'amorous',\n",
       " 'amount',\n",
       " 'amounted',\n",
       " 'amounts',\n",
       " 'amours',\n",
       " 'amphibious',\n",
       " 'amphitheatrical',\n",
       " 'ample',\n",
       " 'amplified',\n",
       " 'amplify',\n",
       " 'amputate',\n",
       " 'amputated',\n",
       " 'amputating',\n",
       " 'amputation',\n",
       " 'amputations',\n",
       " 'amsterdam',\n",
       " 'amuck',\n",
       " 'amusing',\n",
       " 'an',\n",
       " 'an',\n",
       " 'anacharsis',\n",
       " 'anaconda',\n",
       " 'anacondas',\n",
       " 'anak',\n",
       " 'analogical',\n",
       " 'analogies',\n",
       " 'analogous',\n",
       " 'analogy',\n",
       " 'analyse',\n",
       " 'analysed',\n",
       " 'analysis',\n",
       " 'analytic',\n",
       " 'anathemas',\n",
       " 'anatomical',\n",
       " 'anatomist',\n",
       " 'anatomy',\n",
       " 'ancestors',\n",
       " 'ancestress',\n",
       " 'ancestry',\n",
       " 'anchor',\n",
       " 'anchored',\n",
       " 'anchors',\n",
       " 'anchors',\n",
       " 'ancient',\n",
       " 'ancientest',\n",
       " 'and',\n",
       " 'and',\n",
       " 'and',\n",
       " 'andes',\n",
       " 'andirons',\n",
       " 'andrew',\n",
       " 'andromeda',\n",
       " 'anew',\n",
       " 'angel',\n",
       " 'angel',\n",
       " 'angelo',\n",
       " 'angels',\n",
       " 'angels',\n",
       " 'anger',\n",
       " 'angle',\n",
       " 'angles',\n",
       " 'anglo',\n",
       " 'angrily',\n",
       " 'angry',\n",
       " 'anguish',\n",
       " 'angular',\n",
       " 'angularly',\n",
       " 'animal',\n",
       " 'animal',\n",
       " 'animals',\n",
       " 'animate',\n",
       " 'animated',\n",
       " 'animated',\n",
       " 'animating',\n",
       " 'animation',\n",
       " 'animosity',\n",
       " 'ankers',\n",
       " 'ankles',\n",
       " 'annals',\n",
       " 'annals',\n",
       " 'annawon',\n",
       " 'anne',\n",
       " 'annihilated',\n",
       " 'annihilating',\n",
       " 'annihilation',\n",
       " 'anno',\n",
       " 'announced',\n",
       " 'announcement',\n",
       " 'announces',\n",
       " 'announcing',\n",
       " 'annual',\n",
       " 'annually',\n",
       " 'annuitants',\n",
       " 'annus',\n",
       " 'anoint',\n",
       " 'anointed',\n",
       " 'anointing',\n",
       " 'anoints',\n",
       " 'anomalous',\n",
       " 'anomalous',\n",
       " 'anomalously',\n",
       " 'anomaly',\n",
       " 'anon',\n",
       " 'anonymous',\n",
       " 'another',\n",
       " 'another',\n",
       " 'another',\n",
       " 'answer',\n",
       " 'answer',\n",
       " 'answered',\n",
       " 'answers',\n",
       " 'ant',\n",
       " 'antagonistic',\n",
       " 'antarctic',\n",
       " 'antecedent',\n",
       " 'antediluvian',\n",
       " 'antelope',\n",
       " 'antemosaic',\n",
       " 'anti',\n",
       " 'antichronical',\n",
       " 'anticipated',\n",
       " 'anticipatingly',\n",
       " 'anticipation',\n",
       " 'anticipative',\n",
       " 'antics',\n",
       " 'antidote',\n",
       " 'antilles',\n",
       " 'antiochus',\n",
       " 'antique',\n",
       " 'antiquities',\n",
       " 'antiquity',\n",
       " 'antlered',\n",
       " 'antlers',\n",
       " 'antony',\n",
       " 'ants',\n",
       " 'antwerp',\n",
       " 'anus',\n",
       " 'anvil',\n",
       " 'anvil',\n",
       " 'anxieties',\n",
       " 'anxiety',\n",
       " 'anxious',\n",
       " 'any',\n",
       " 'any',\n",
       " 'any',\n",
       " 'anybody',\n",
       " 'anyhow',\n",
       " 'anyhow',\n",
       " 'anyone',\n",
       " 'anything',\n",
       " 'anything',\n",
       " 'anyway',\n",
       " 'anyways',\n",
       " 'anywhere',\n",
       " 'aorta',\n",
       " 'apart',\n",
       " 'apartment',\n",
       " 'ape',\n",
       " 'apeak',\n",
       " 'apertures',\n",
       " 'apex',\n",
       " 'apollo',\n",
       " 'apology',\n",
       " 'apoplectic',\n",
       " 'apoplexy',\n",
       " 'apoplexy',\n",
       " 'apostolic',\n",
       " 'apothecary',\n",
       " 'apotheosis',\n",
       " 'appal',\n",
       " 'appalled',\n",
       " 'appalling',\n",
       " 'appallingly',\n",
       " 'appals',\n",
       " 'apparatus',\n",
       " 'apparel',\n",
       " 'apparelled',\n",
       " 'apparent',\n",
       " 'apparently',\n",
       " 'apparition',\n",
       " 'appeal',\n",
       " 'appeals',\n",
       " 'appear',\n",
       " 'appearance',\n",
       " 'appearances',\n",
       " 'appeared',\n",
       " 'appearing',\n",
       " 'appears',\n",
       " 'appellation',\n",
       " 'appellations',\n",
       " 'appellative',\n",
       " 'append',\n",
       " 'appendage',\n",
       " 'appetite',\n",
       " 'appetites',\n",
       " 'apple',\n",
       " 'appliance',\n",
       " 'applicable',\n",
       " 'application',\n",
       " 'application',\n",
       " 'applied',\n",
       " 'applied',\n",
       " 'applies',\n",
       " 'apply',\n",
       " 'apply',\n",
       " 'applying',\n",
       " 'appoint',\n",
       " 'appointed',\n",
       " 'appointments',\n",
       " 'apportioned',\n",
       " 'appreciative',\n",
       " 'apprehension',\n",
       " ...]"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(w.lower() for w in set(text1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c740a922",
   "metadata": {},
   "source": [
    "◑ 下面两个测试的差异是什么：`w.isupper()` 和`not w.islower()`？\n",
    "\n",
    "◑ 写一个切片表达式提取`text2`中最后两个词。\n",
    "\n",
    "◑ 找出聊天语料库（`text5`）中所有四个字母的词。使用频率分布函数（`FreqDist`），以频率从高到低显示这些词。\n",
    "\n",
    "◑ 复习第[4](http://www.nltk.org/book/ch01.html#sec-making-decisions)节中条件循环的讨论。使用`for`和`if`语句组合循环遍历*《巨蟒和圣杯》*（`text6`）的电影剧本中的词，`print`所有的大写词，每行输出一个。\n",
    "\n",
    "◑ 写表达式找出`text6`中所有符合下列条件的词。结果应该是单词列表的形式：`['word1', 'word2', ...]`。\n",
    "\n",
    "1. 以ize 结尾\n",
    "2. 包含字母z\n",
    "3. 包含字母序列pt\n",
    "4. 除了首字母外是全部小写字母的词（即`titlecase`）\n",
    "\n",
    "◑ 定义`sent`为一个单词列表：`['she', 'sells', 'sea', 'shells', 'by', 'the', 'sea', 'shore']`。编写代码执行以下任务：\n",
    "\n",
    "1. 输出所有sh开头的单词\n",
    "2. 输出所有长度超过4 个字符的词\n",
    "\n",
    "◑ 下面的Python 代码是做什么的？`sum(len(w) for w in text1)` 你可以用它来算出一个文本的平均字长吗？\n",
    "\n",
    "◑ 定义一个名为`vocab_size(text)`的函数，以文本作为唯一的参数，返回文本的词汇量。\n",
    "\n",
    "◑ 定义一个函数`percent(word, text)`，计算一个给定的词在文本中出现的频率，结果以百分比表示。\n",
    "\n",
    "◑ 我们一直在使用集合存储词汇表。试试下面的Python 表达式：`set(sent3) < set(text1)`。实验在`set()`中使用不同的参数。它是做什么用的？你能想到一个实际的应用吗？\n",
    "\n",
    "关于本文档...\n",
    "\n",
    "针对NLTK 3.0 进行更新。本章来自于*Natural Language Processing with Python*，[Steven Bird](http://estive.net/), [Ewan Klein](http://homepages.inf.ed.ac.uk/ewan/) 和[Edward Loper](http://ed.loper.org/)，Copyright © 2014 作者所有。本章依据*Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License* [http://creativecommons.org/licenses/by-nc-nd/3.0/us/] 条款，与*自然语言工具包* [`http://nltk.org/`] 3.0 版一起发行。\n",
    "\n",
    "本文档构建于星期三 2015 年 7 月 1 日 12:30:05 AEST\n",
    "\n",
    "## Docutils System Messages\n",
    "\n",
    "System Message: ERROR/3 (`ch01.rst2`, line 1889); *[backlink](http://www.nltk.org/book/ch01.html#id9)*\n",
    "\n",
    "Unknown target name: \"finegan2007\"."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:.conda-nltk38]",
   "language": "python",
   "name": "conda-env-.conda-nltk38-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
